Get Attribute des Root-Elements im XML unter Verwendung von xpath-Abfrage-Ausdruck in Java
Habe ich diese XML -
<Results SchemaVersion="1.0" SchemaType="Results" GroupId="-12345"
xmlns="http://xyz" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
<Attempt>
<Time>2007-03-30T15:58:15</Time>
<Message>This is some message</Message>
</Attempt>
<Attempt>
<Time>2007-03-30T15:59:45</Time>
<Message>This is some other message</Message>
</Attempt>
</Results>
Und ich habe diesen code in Java, die analysiert, die über xml. Ich möchte die Attribute des root-Elements im xml unter Verwendung von xpath-Abfrage. Ich bin in der Lage, um den Wert des root-Elements, aber nicht die Attribute.
Hinweis: ich weiß nicht, die Namen der attribute, in diesem Fall, sonst hätte ich direkt zugegriffen, diese Attribute
public class Try {
public static void main(String args[]){
try{
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("C:/Documents and Settings/tulans/workspace/WebServiceTool/src/main/resources/Input.xml");
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile("/*");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
System.out.println(nodes.item(0).getLocalName());
System.out.println(nodes.item(0).getNodeName());
}catch(Exception e){
System.out.println(e);
}
}
}
Bekomme ich Folgende Ergebnisse:
Results
Results
Ich will auch root-Elemente Attribut :
SchemaVersion="1.0" SchemaType="Results" GroupId="-12345"
xmlns="http://xyz" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
Node
Klasse hat einegetAttributes
Methode, die sollten Sie geben, was Sie brauchen:Don und Jörn haben bereits gezeigt, wie Sie den Zugriff auf die Attribut-nodes im DOM-Baum; als Sie gefragt haben, zu XPath verwenden, um Ihnen den Zugang zeige ich eine alternative, können Sie einfach mit Hilfe der XPath-Ausdruck
/*/@*
Zugriff auf die Attribut-Knoten des root element des XPath-Daten-Modell. Beachten Sie jedoch, dass die namespace-Deklarationen sind nicht Attribut-Knoten im XPath-Datenmodell, so dass Pfad werden nur die AttributeSchemaVersion="1.0" SchemaType="Results" GroupId="-12345"
. Also basierend auf Ihre gewünschte Ergebnis werden Sie besser deaktivieren, um den DOMgetAttributes
anstelle von XPath.