2013-01-04 5 views
9

Ich habe die a-Zeichenfolge im XML-Format. Ich möchte es lesen und die Werte der Elemente erhalten.Lesen Sie die Zeichenfolge im XML-Format und erhalten Sie die Werte der Elemente in Java

Ich habe Java JAXBContext unmarshell bei here versucht. Aber das braucht eine Klassenbildung, die für mich nicht notwendig ist.

String:

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

Ich möchte die Werte von Alter und Namen erhalten.

Kann mir jemand helfen.

+0

mögliche Duplikate von [Wie Elementwert von XML mit Java abrufen?] (Http://stackoverflow.com/questions/4076910/how-to-retrieve-element-value-of-xml-using-java) –

Antwort

26

Das ist Ihre xml:

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

Und das ist der Parser:

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

Danke für die Antwort – Patan

+0

Gern geschehen – vault

2

JDOM ist ganz einfach zu bedienen:

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 hat eine schöne Unterstützung für XML

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

Mit XPath in dem Standard-API:

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

So wie ein Leckerbissen für die Nutzer mit komplizierteren XMLs, wie ich. Wenn Sie Elemente mit dem gleichen Namen haben, aber unterschiedliche Attribute, zum Beispiel:

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

Die Art und Weise, sie zu extrahieren ist @ Vault folgen answer aber, stellen Sie sicher, dass der Wert in der .item(int) Funktion zu ändern.

Wenn Sie das erste Feld verwenden möchten, verwenden Sie .item(0). Wenn Sie möchten, dass die Sekunde, die Sie verwenden, .item(1)

Hope dies hilft für zukünftige Benutzer, wie es für mich getan hat.

Verwandte Themen