2010-12-01 5 views
0

Ich habe eine statische XML so etwas. Es ist im Grunde eine Art von Konfiguration.Wie kann der XML-Knotenwert dynamisch gelesen werden?

<ScoCodes> 
    <element scoCode="C1" foo="fooc1" bar="barc1" /> 
    <element scoCode="C2" foo="fooc2" bar="barc2" /> 
     <!-- like these 100 nodes are present --> 
</ScoCodes> 

für einen bestimmten scoCode, möchte ich wissen, was sein ist foo Wert und bar Wert?

Da es statisch ist, muss ich einmal in einem statischen Block analysieren und es in eine Art DTO konvertieren und die DTOs in einer Sammlung (Liste, Set usw.) platzieren, so dass die Elemente (DTOs) leicht sein können gesucht?

Antwort

4

versuchen, diese

String xmlSource = "your xml"; 
String xpathExpression = "//element[@scoCode='C1']/@foo | //element[@scoCode='C1']/@bar"; 

XPath xpath = XPathFactory.newInstance().newXPath(); 
StringReader reportConfigurationXML = new StringReader(xmlSource); 
InputSource inputSource = new InputSource(reportConfigurationXML); 

String result = (String) xpath.evaluate(xpathExpression, inputSource, XPathConstants.STRING); 

Cheers, Borut

1

Sie müssen XPath-Ausdrücke verwenden. Um das gesamte foo-Attribut auszuwählen, können Sie den XPath-Ausdruck '// @ foo' verwenden. Sobald Sie alle Attribute haben, können Sie ihre Werte erhalten.

Ich weiß nicht genaue Syntax n Klassen in Java verwendet, um dies zu tun, da ich C# -Entwickler bin. Hoffe das wird dir helfen. Sie können weitere Informationen zu XPath here erhalten.

Verwandte Themen