2011-12-07 15 views
1

私はJava 1.6を使用しています。 org.w3c.dom.Nodeオブジェクトが与えられている場合、そのノードがXML文書のどこにあるかを表すString XPath式を取得するにはどうすればよいですか?このノードまたはその祖先/子孫のいずれかがid属性を持っていることは条件です。Java:org.w3c.dom.Nodeのxpathを取得するにはどうすればよいですか?

+1

これはSO上でJavaScriptが何回も回答されています。あなたは、それらの答えのいくつかを見ることからいくつかの使用を得るかもしれません。このように:http://stackoverflow.com/questions/2661818/javascript-get-xpath-of-a-node –

答えて

1

私はDOM経由で簡単な方法があるとは思わない。問題は、指定されたノードを識別する標準的な方法が1つもないことです。

あなたはdiffxml役に立つから関数getXPathを見つけるかもしれない、と述べた:http://diffxml.cvs.sourceforge.net/viewvc/diffxml/diffxml/src/java/org/diffxml/diffxml/fmes/NodeOps.java?view=markup

それは、フォーム/ノードのXPathを(戻ります)[4] /ノード()[2]など

更新:diffxmlはGPLライセンスでgetXPathは少し抜き取るので、Apacheライセンスでgithub:https://github.com/amouat/XPathGenのXPathGenとしてリリースしました。

+0

ノードを表現するための標準的な方法はないかもしれませんが、いつでも正確に行うことができます。ポジション。 –

+0

@lwburkそれはリンクされたコードです:) –

+0

私はデバッグの目的のためにこのようにコードを使用します。いい物。 – JohnnyK

0

あなたは、このようなこの1のように再帰的な方法にあなたのノードと空の文字列を渡すことができます。

static void xpm(Node node, String xpath){ 
    if (node.getParentNode()==null){ 
     System.out.println(xpath); 
     return; 
    } 

    xpath = "/"+node.getNodeName()+xpath; 
    node = node.getParentNode(); 
    xpm(node, xpath); 
} 
関連する問題