でこの属性のノードと戻り値の厳密に1つの属性が存在する場合、私は属性IDが存在するかどうかを確認したいと思いますし、それがこの例のXMLファイルの空でない場合:チェックXPATH
<component
id="http://../EDYRA/prototype/TextEditor"
isUI="true"
name="TextEditor"
version="0.1">
<binding>
<dependencies>
<dependency language="javascript">
<url>https://../TextEditor.js</url>
</dependency>
</dependencies>
<constructor>
<code>new TextEditor();</code>
</constructor>
</binding>
</component>
私が持っていますJavaでこのXPathクエリを書いた:
XPathExpression expr = xpath.compile("//component[@id]/@id/text()");
Object result = expr.evaluate(file, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
resultsString += "Expression: //component[@id]/@id/text();
resultsString += " \r\nNode List: " + result.toString() + " \r\n Item: ";
resultsString += nodes.item(0) + " \r\n Length: ";
resultsString += nodes.getLength() + " \r\n\r\n\r\n";
file.getDocumentElement();
resultsString += "Attribute ->" + " : " + file.getDocumentElement().getAttribute("id");
私はそれをテストしていると、残念ながら、それは0項目にリストを返します:
式://コンポーネント[@id]/@のID /テキスト()
ノードリスト:[email protected]
アイテム:ヌル
長さ:0
属性 - >http://../EDYRA/prototype/TextEditor
この属性が存在するかどうかをチェックしてこの属性の値を取得するには、正しい照会をどのように見なければなりませんか?
編集:
//コンポーネント[@id]も何の結果を返しません。 ...
text()に属性を付けることはできません。そのようなxpath 'string(// component [@id]/@ id)'を使用してください。 – splash58
確かに、//コンポーネント[@id]/@ id'で属性を取り、プログラム言語で値を取ることができますが、Javaでそれを助けることはできません – splash58
ノードリストの長さ0を返す – Beacze