எக்ஸ்எம்எல் கோப்புகளை குறியீட்டில் படிப்பது மற்றும் எழுதுவது எப்படி

எக்ஸ்எம்எல் கோப்புகளை குறியீட்டில் படிப்பது மற்றும் எழுதுவது எப்படி

ஜாவாவிலிருந்து ஒரு எக்ஸ்எம்எல் கோப்பை எப்படி படிக்க வேண்டும் மற்றும் எழுத வேண்டும் என்பதை அறிய விரும்புகிறீர்களா?





எக்ஸ்எம்எல் கோப்புகள் தரவு சேமிப்பு உட்பட பல்வேறு நோக்கங்களுக்காக பயன்படுத்தப்படுகின்றன. JSON பிரபலமடைவதற்கு முன்பு, கட்டமைக்கப்பட்ட தரவைப் பிரதிநிதித்துவப்படுத்துவதற்கும், சேமிப்பதற்கும் மற்றும் கொண்டு செல்வதற்கும் XML விருப்பமான வடிவமாக இருந்தது. சமீபத்திய ஆண்டுகளில் எக்ஸ்எம்எல்லின் புகழ் குறைந்துவிட்டாலும், நீங்கள் அதை எப்போதாவது சந்திக்க நேரிடும், எனவே குறியீட்டில் இருந்து எப்படி வேலை செய்வது என்பதை கற்றுக்கொள்வது அவசியம்.





ஜாவா ஸ்டாண்டர்ட் பதிப்பு (எஸ்இ) உள்ளடக்கியது XML செயலாக்கத்திற்கான Java API (JAXP) , இது XML செயலாக்கத்தின் பெரும்பாலான அம்சங்களை உள்ளடக்கிய ஒரு குடை சொல். இவற்றில் அடங்கும்:





  • தீர்ப்பு: ஆவணம் பொருள் மாதிரி உறுப்பு, முனை, பண்புக்கூறுகள் போன்ற எக்ஸ்எம்எல் கலைப்பொருட்களுடன் வேலை செய்வதற்கான வகுப்புகளை உள்ளடக்கியது.
  • சாக்ஸ்: எக்ஸ்எம்எல்லுக்கான எளிய ஏபிஐ என்பது எக்ஸ்எம்எல் படிப்பதற்கான ஒரு நிகழ்வு சார்ந்த வழிமுறையாகும். இங்கே எக்ஸ்எம்எல் படிக்கும்போது எரியும் நிகழ்வுகள் மூலம் எக்ஸ்எம்எல் செயலாக்கப்படுகிறது. இந்த முறையைப் பயன்படுத்துவதற்கான நினைவகத் தேவைகள் குறைவாக உள்ளன, ஆனால் DOM உடன் வேலை செய்வதை விட API உடன் வேலை செய்வது மிகவும் சிக்கலானது.
  • வரி: எக்ஸ்எம்எல்லுக்கான ஸ்ட்ரீமிங் ஏபிஐ எக்ஸ்எம்எல் ஏபிஐக்களுக்கு அண்மையில் சேர்க்கப்பட்டது மற்றும் உயர் செயல்திறன் ஸ்ட்ரீம் வடிகட்டுதல், செயலாக்கம் மற்றும் எக்ஸ்எம்எல் மாற்றத்தை வழங்குகிறது. முழு எக்ஸ்எம்எல் ஆவணத்தையும் நினைவகத்தில் ஏற்றுவதை இது தவிர்க்கிறது, இது ஒரு நிகழ்வு-உந்துதல் கட்டமைப்பைக் காட்டிலும் ஒரு புல்-வகை கட்டமைப்பை வழங்குகிறது, எனவே SAX API ஐப் பயன்படுத்துவதை விட பயன்பாடு குறியீட்டைப் புரிந்துகொள்வது எளிது.

இந்த கட்டுரையில், நாங்கள் பயன்படுத்துகிறோம் DOM API ஜாவாவிலிருந்து எக்ஸ்எம்எல் கோப்புகளை எப்படி படிக்க வேண்டும் மற்றும் எழுத வேண்டும் என்பதை நிரூபிக்க. எதிர்கால கட்டுரைகளில் மற்ற இரண்டு API களை உள்ளடக்குவோம்.

ஒரு மாதிரி எக்ஸ்எம்எல் கோப்பு

இந்த கட்டுரையின் நோக்கத்திற்காக, பின்வரும் மாதிரி XML ஐப் பயன்படுத்தி கருத்துகளை நாங்கள் நிரூபிக்கிறோம் இங்கே :






Gambardella, Matthew
XML Developer's Guide
Computer
44.95
2000-10-01
An in-depth look at creating applications
with XML.


Ralls, Kim
...

எக்ஸ்எம்எல் கோப்பைப் படித்தல்

DOM API ஐப் பயன்படுத்தி XML கோப்பைப் படிக்கத் தேவையான அடிப்படை படிகளைப் பார்ப்போம்.

ஒரு உதாரணத்தைப் பெறுவதே முதல் படி ஆவண பில்டர் . பில்டர் எக்ஸ்எம்எல் ஆவணங்களைப் பாகுபடுத்தப் பயன்படுகிறது. அடிப்படை பயன்பாட்டிற்கு, நாங்கள் இதை இப்படி செய்கிறோம்:





சிஎம்டியைப் பயன்படுத்தி கணினி விவரக்குறிப்புகளை எவ்வாறு சரிபார்க்கலாம்
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();

எக்ஸ்எம்எல் ரூட் தனிமத்திலிருந்து தொடங்கி இப்போது முழு ஆவணத்தையும் நினைவகத்தில் ஏற்றலாம். எங்கள் எடுத்துக்காட்டில், இது அட்டவணை உறுப்பு

File file = ...; // XML file to read
Document document = builder.parse(file);
Element catalog = document.getDocumentElement();

அது தான், மக்களே! எக்ஸ்எம்எல் படிப்பதற்கான DOM API மிகவும் எளிது. அதன் மூல உறுப்பிலிருந்து தொடங்கி முழு எக்ஸ்எம்எல் ஆவணத்தையும் இப்போது நீங்கள் அணுகலாம், அட்டவணை . அதனுடன் எப்படி வேலை செய்வது என்று இப்போது பார்ப்போம்.





DOM API ஐப் பயன்படுத்துதல்

இப்போது எங்களிடம் XML ரூட் உள்ளது உறுப்பு , நாம் DOM API யைப் பயன்படுத்தி சுவாரஸ்யமான தகவல்களைப் பெறலாம்.

அனைத்தையும் பெறுங்கள் நூல் வேர் உறுப்பு மற்றும் அவர்கள் மீது வளைய குழந்தைகள். குறிப்பு getChildNodes () திரும்புகிறது அனைத்து குழந்தைகள், உரை, கருத்துகள், முதலியன உட்பட, எங்கள் நோக்கத்திற்காக, எங்களுக்கு குழந்தை கூறுகள் மட்டுமே தேவை, எனவே நாம் மற்றவற்றைத் தவிர்ப்போம்.

NodeList books = catalog.getChildNodes();
for (int i = 0, ii = 0, n = books.getLength() ; i Node child = books.item(i);
if ( child.getNodeType() != Node.ELEMENT_NODE )
continue;
Element book = (Element)child;
// work with the book Element here
}

பெற்றோருக்கு கொடுக்கப்பட்ட ஒரு குறிப்பிட்ட குழந்தை உறுப்பை எப்படி கண்டுபிடிப்பது? பின்வரும் நிலையான முறை கண்டுபிடிக்கப்பட்டால் முதல் பொருந்தும் உறுப்பு அல்லது பூஜ்யத்தை அளிக்கிறது. நீங்கள் பார்க்க முடியும் என, செயல்முறை குழந்தை முனைகளின் பட்டியலைப் பெறுவது மற்றும் குறிப்பிட்ட பெயருடன் உறுப்பு முனைகளைத் தேர்ந்தெடுப்பது.

static private Node findFirstNamedElement(Node parent,String tagName)
{
NodeList children = parent.getChildNodes();
for (int i = 0, in = children.getLength() ; i Node child = children.item(i);
if ( child.getNodeType() != Node.ELEMENT_NODE )
continue;
if ( child.getNodeName().equals(tagName) )
return child;
}
return null;
}

டிஓஎம் ஏபிஐ ஒரு தனிமத்திற்குள் உள்ள உரை உள்ளடக்கத்தை வகையின் தனி முனையாக கருதுகிறது என்பதை நினைவில் கொள்க TEXT_NODE . கூடுதலாக, உரை உள்ளடக்கம் பல அருகிலுள்ள உரை முனைகளாக பிரிக்கப்படலாம். எனவே ஒரு தனிமத்திற்குள் உரை உள்ளடக்கத்தைப் பெற பின்வரும் சிறப்பு செயலாக்கம் தேவைப்படுகிறது.

static private String getCharacterData(Node parent)
{
StringBuilder text = new StringBuilder();
if ( parent == null )
return text.toString();
NodeList children = parent.getChildNodes();
for (int k = 0, kn = children.getLength() ; k Node child = children.item(k);
if ( child.getNodeType() != Node.TEXT_NODE )
break;
text.append(child.getNodeValue());
}
return text.toString();
}

இந்த வசதியான செயல்பாடுகளுடன் ஆயுதம் ஏந்திய, இப்போது எங்களது மாதிரி எக்ஸ்எம்எல்லிலிருந்து சில தகவல்களை பட்டியலிடுவதற்கு சில குறியீட்டைப் பார்ப்போம். ஒவ்வொரு புத்தகத்திற்கும் விரிவான தகவல்களைக் காட்ட விரும்புகிறோம், அதாவது புத்தகப் பட்டியலில் கிடைக்கும்.

NodeList books = catalog.getChildNodes();
for (int i = 0, ii = 0, n = books.getLength() ; i Node child = books.item(i);
if ( child.getNodeType() != Node.ELEMENT_NODE )
continue;
Element book = (Element)child;
ii++;
String id = book.getAttribute('id');
String author = getCharacterData(findFirstNamedElement(child,'author'));
String title = getCharacterData(findFirstNamedElement(child,'title'));
String genre = getCharacterData(findFirstNamedElement(child,'genre'));
String price = getCharacterData(findFirstNamedElement(child,'price'));
String pubdate = getCharacterData(findFirstNamedElement(child,'pubdate'));
String descr = getCharacterData(findFirstNamedElement(child,'description'));
System.out.printf('%3d. book id = %s
' +
' author: %s
' +
' title: %s
' +
' genre: %s
' +
' price: %s
' +
' pubdate: %s
' +
' descr: %s
',
ii, id, author, title, genre, price, pubdate, descr);
}

எக்ஸ்எம்எல் வெளியீட்டை எழுதுதல்

ஜாவா வழங்குகிறது எக்ஸ்எம்எல் டிரான்ஸ்ஃபார்ம் ஏபிஐ எக்ஸ்எம்எல் தரவை மாற்ற. இந்த API உடன் நாங்கள் பயன்படுத்துகிறோம் அடையாள மாற்றம் வெளியீட்டை உருவாக்க.

உதாரணமாக, புதியதைச் சேர்ப்போம் நூல் மேலே வழங்கப்பட்ட மாதிரி பட்டியலுக்கான உறுப்பு. புத்தகத்தின் விவரங்கள் (போன்றவை நூலாசிரியர் , தலைப்பு , போன்றவை) வெளிப்புறமாகப் பெறலாம், ஒருவேளை ஒரு பண்புகள் கோப்பு அல்லது ஒரு தரவுத்தளத்திலிருந்து. தரவை ஏற்றுவதற்கு பின்வரும் பண்புகள் கோப்பைப் பயன்படுத்துகிறோம்.

id=bk113
author=Jane Austen
title=Pride and Prejudice
genre=Romance
price=6.99
publish_date=2010-04-01
description='It is a truth universally acknowledged, that a single man in possession of a good fortune must be in want of a wife.' So begins Pride and Prejudice, Jane Austen's witty comedy of manners-one of the most popular novels of all time-that features splendidly civilized sparring between the proud Mr. Darcy and the prejudiced Elizabeth Bennet as they play out their spirited courtship in a series of eighteenth-century drawing-room intrigues.

மேலே வழங்கப்பட்ட முறையைப் பயன்படுத்தி தற்போதுள்ள XML கோப்பை பாகுபடுத்துவது முதல் படி. குறியீடும் கீழே காட்டப்பட்டுள்ளது.

File file = ...; // XML file to read
Document document = builder.parse(file);
Element catalog = document.getDocumentElement();

பண்புகளைப் பயன்படுத்தி தரவை ஏற்றுகிறோம் பண்புகள் ஜாவா வழங்கப்பட்ட வகுப்பு. குறியீடு மிகவும் எளிமையானது மற்றும் கீழே காட்டப்பட்டுள்ளது.

String propsFile = ...;
Properties props = new Properties();
try (FileReader in = new FileReader(propsFile)) {
props.load(in);
}

பண்புகள் ஏற்றப்பட்டவுடன், பண்புகள் கோப்பில் இருந்து நாம் சேர்க்க விரும்பும் மதிப்புகளை மீட்டெடுக்கிறோம்.

String id = props.getProperty('id');
String author = props.getProperty('author');
String title = props.getProperty('title');
String genre = props.getProperty('genre');
String price = props.getProperty('price');
String publish_date = props.getProperty('publish_date');
String descr = props.getProperty('description');

நாம் இப்போது ஒரு காலியானதை உருவாக்குவோம் நூல் உறுப்பு

ஒரு படத்தின் dpi ஐ எவ்வாறு சரிபார்க்கலாம்
Element book = document.createElement('book');
book.setAttribute('id', id);

குழந்தையின் கூறுகளை சேர்த்தல் நூல் அற்பமானது. வசதிக்காக, தேவையான உறுப்பு பெயர்களை a இல் சேகரிக்கிறோம் பட்டியல் மற்றும் ஒரு வளையத்தில் மதிப்புகளைச் சேர்க்கவும்.

List elnames =Arrays.asList('author', 'title', 'genre', 'price',
'publish_date', 'description');
for (String elname : elnames) {
Element el = document.createElement(elname);
Text text = document.createTextNode(props.getProperty(elname));
el.appendChild(text);
book.appendChild(el);
}
catalog.appendChild(book);

மேலும் அது எப்படி செய்யப்படுகிறது. தி அட்டவணை உறுப்பு இப்போது புதியது நூல் உறுப்பு சேர்க்கப்பட்டது. இப்போது எஞ்சியிருப்பது புதுப்பிக்கப்பட்ட எக்ஸ்எம்எல்லை எழுதுவது மட்டுமே.

எக்ஸ்எம்எல் எழுத, நமக்கு ஒரு உதாரணம் தேவை மின்மாற்றி இது கீழே காட்டப்பட்டுள்ளபடி உருவாக்கப்பட்டது. வெளியீட்டைப் பயன்படுத்தி XML இன் உள்தள்ளலை நாங்கள் கோருகிறோம் setOutputProperty () முறை

TransformerFactory tfact = TransformerFactory.newInstance();
Transformer tform = tfact.newTransformer();
tform.setOutputProperty(OutputKeys.INDENT, 'yes');
tform.setOutputProperty('{http://xml.apache.org/xslt}indent-amount', '3');

எக்ஸ்எம்எல் வெளியீட்டை உருவாக்குவதற்கான இறுதி படி உருமாற்றத்தைப் பயன்படுத்துவதாகும். முடிவு வெளியீட்டில் தோன்றுகிறது, System.out .

tform.transform(new DOMSource(document), new StreamResult(System.out));

வெளியீட்டை நேரடியாக ஒரு கோப்பில் எழுத, பின்வருவனவற்றைப் பயன்படுத்தவும்.

tform.transform(new DOMSource(document), new StreamResult(new File('output.xml')));

DOM API ஐப் பயன்படுத்தி XML கோப்புகளைப் படிப்பது மற்றும் எழுதுவது பற்றிய இந்தக் கட்டுரையை இது மூடிமறைக்கிறது.

உங்கள் பயன்பாடுகளில் DOM API ஐப் பயன்படுத்தினீர்களா? அது எவ்வாறு செயல்பட்டது? தயவுசெய்து கீழே உள்ள கருத்துகளில் எங்களுக்குத் தெரியப்படுத்துங்கள்.

பகிர் பகிர் ட்வீட் மின்னஞ்சல் கேனான் எதிராக நிகான்: எந்த கேமரா பிராண்ட் சிறந்தது?

கேனான் மற்றும் நிகான் கேமரா துறையில் இரண்டு பெரிய பெயர்கள். ஆனால் எந்த பிராண்ட் கேமராக்கள் மற்றும் லென்ஸ்களின் சிறந்த வரிசையை வழங்குகிறது?

அடுத்து படிக்கவும்
தொடர்புடைய தலைப்புகள்
  • நிரலாக்க
  • ஜாவா
எழுத்தாளர் பற்றி ஜெய் ஸ்ரீதர்(17 கட்டுரைகள் வெளியிடப்பட்டன) ஜெய் ஸ்ரீதரிடமிருந்து மேலும்

எங்கள் செய்திமடலுக்கு குழுசேரவும்

தொழில்நுட்ப குறிப்புகள், மதிப்புரைகள், இலவச மின் புத்தகங்கள் மற்றும் பிரத்யேக ஒப்பந்தங்களுக்கு எங்கள் செய்திமடலில் சேரவும்!

குழுசேர இங்கே சொடுக்கவும்