1

私はxmlファイルでこれらの出現を検索しようとしています:

<xml>  
<corpus>  
<body>  
<nonterminals>  
<graph>  
<s>  
<nt id="s9_509" cat="fcl"></nt>  

<nt id="s9_501" cat="pp">  
                <edge label="H" idref="s9_1"/>  
                <edge label="DP" idref="s9_502"/>  
                <edge label="STA" idref="s9_509"/>  
                <edge label="P" idref="s9_19"/>  
                <edge label="S" idref="s9_510"/>  
                <edge label="PU" idref="s9_25"/>  
            </nt>  
</nonterminals>  
</graph>  
</s>  
</body>  
</corpus>  
</xml>  

そして私のコードは次のとおりです。

XPath xpath = XPathFactory.newInstance().newXPath();    
String path = "//xml//corpus//build//s//graph//nonterminals//nt";  
XPathExpression expr = xpath.compile(path);    
System.out.println("Query1: "+path);  
Object result = expr.evaluate(document, XPathConstants.NODESET);    
NodeList nodes = (NodeList) result;    
System.out.println("Number of nodes: "+nodes.getLength());  
for (int i = 0; i < nodes.getLength(); i++) {    
    System.out.println(nodes.item(i).getAttributes().getNamedItem("id").getNodeValue());  

このクエリは正しいですか? それを試す別の方法はありますか?ノードの結果を削除するにはどうすればよいですか?

4

1 に答える 1

0

これが XML の構造全体で<xml>あり、ルート ノードであるとすると、XPath は次のようになります。

/xml/corpus/build/s/graph/nonterminals/nt

ドキュメント内のどこに表示されるかに関係なく、すべて のノードを一致させたい場合は、次を使用できます。nt

//nt

前もって Java を記述しなくても、XPath クエリの結果を確認できる便利な無料ツールがあります。

http://xml-copy-editor.sourceforge.net/

http://www.xpathtester.com/

于 2012-12-11T17:33:25.887 に答える