2013-01-04 11 views
9

में तत्वों के मान प्राप्त करें मेरे पास XML प्रारूप में एक स्ट्रिंग है। मैं इसे पढ़ना चाहता हूं और तत्वों के मूल्य प्राप्त करना चाहता हूं।एक्सएमएल प्रारूप में स्ट्रिंग के माध्यम से पढ़ना और जावा

मैंने जावा JAXBContext अनमर्शेल को here पर आज़माया है। लेकिन इसके लिए कक्षा के निर्माण की आवश्यकता है जो मेरे लिए आवश्यक नहीं है।

स्ट्रिंग:

<customer> 
    <age>35</age> 
    <name>aaa</name> 
</customer> 

मैं उम्र और नाम के मूल्यों को प्राप्त करना चाहते हैं।

क्या कोई मेरी मदद कर सकता है।

+0

के संभावित डुप्लिकेट [कैसे जावा का उपयोग कर एक्सएमएल के तत्व मान प्राप्त करने के लिए?] (Http://stackoverflow.com/questions/4076910/how-to-retrieve-element-value-of-xml-using-java) –

उत्तर

26

इस के लिए एक अच्छी समर्थन हासिल है अपने xml है:

String xml = "<customer><age>35</age><name>aaa</name></customer>"; 

और यह पार्सर है:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
InputSource src = new InputSource(); 
src.setCharacterStream(new StringReader(xml)); 

Document doc = builder.parse(src); 
String age = doc.getElementsByTagName("age").item(0).getTextContent(); 
String name = doc.getElementsByTagName("name").item(0).getTextContent(); 
+0

प्रतिक्रिया – Patan

+0

के लिए धन्यवाद आपका स्वागत है – vault

2

JDOM उपयोग करने के लिए काफी आसान है:

SAXBuilder builder = new SAXBuilder(); 
File xmlFile = new File("c:\\file.xml"); 
Document document = (Document) builder.build(xmlFile); 
Element rootNode = document.getRootElement(); 
List list = rootNode.getChildren("customer"); 

for (int i = 0; i < list.size(); i++) { 

    Element node = (Element) list.get(i); 

    System.out.println("Age : " + node.getChildText("age")); 
    System.out.println("Name : " + node.getChildText("name"));   
} 
3

JSoup एक्सएमएल

import org.jsoup.*  
import org.jsoup.nodes.* 
import org.jsoup.parser.* 

//str is the xml string 
String str = "<customer><age>35</age><name>aaa</name></customer>" 
Document doc = Jsoup.parse(str, "", Parser.xmlParser()); 
System.out.println(doc.select("age").text()) 
4

मानक एपीआई में XPath का उपयोग करना:

String xml = "<customer>" + "<age>35</age>" + "<name>aaa</name>" 
    + "</customer>"; 
InputSource source = new InputSource(new StringReader(xml)); 
XPath xpath = XPathFactory.newInstance() 
          .newXPath(); 
Object customer = xpath.evaluate("/customer", source, XPathConstants.NODE); 
String age = xpath.evaluate("age", customer); 
String name = xpath.evaluate("name", customer); 
System.out.println(age + " " + name); 
0

बस और अधिक जटिल XMLs साथ उपयोगकर्ताओं के लिए एक tidbit के रूप में, मैं कर के रूप में। आप ही नाम के साथ तत्वों लेकिन, अलग-अलग विशेषताओं, उदाहरण के लिए है, तो:

<field tag="8"> Country </field> 
<field tag="12"> State </field> 

तरीका उन्हें निकालने के लिए @ गुम्बद की answer का पालन करें लेकिन, .item(int) समारोह में मान बदलने के लिए सुनिश्चित करने के लिए है।

यदि आप पहले फ़ील्ड चाहते हैं तो आप .item(0) का उपयोग करें। यदि आप दूसरा चाहते हैं तो आप .item(1)

आशा करते हैं कि यह भविष्य के उपयोगकर्ताओं के लिए मेरी मदद करता है जैसा कि यह मेरे लिए किया गया है।

संबंधित मुद्दे