2011-11-24 14 views
3

私は以下のようなXMLがあります。今、私はノード選択した行を削除したい特定の位置にXMLからノードを削除

<As> 
<a> 
    <Bs> 
     <b>5</b> 
    <Bs> 
</a> 
<a> 
    <Bs> 
     <b>9</b> 
    <Bs> 
</a> 
<a></a> 
<a> 
    <Bs> 
     <b>12</b> 
     <b>14</b> 
     <b>15</b> 
    </Bs> 
</a> 

を。ユーザがノード<b>14</b>を選択したとします。

私はとして式を生成している:それは次の例外を与えている

String expression = "/As/a[4]/Bs/b[2]"; 
Node node = (Node) xpath.evaluate(expression, doc, XPathConstants.NODE); 
node.getParentNode().removeChild(node); 

javax.xml.transform.TransformerException: Extra illegal tokens: 'health-history-questions', '/', 'health-history-question', '[', '3', ']' 
at org.apache.xpath.compiler.XPathParser.error(XPathParser.java:610) 
at org.apache.xpath.compiler.XPathParser.initXPath(XPathParser.java:145) 
at org.apache.xpath.XPath.<init>(XPath.java:178) 
at org.apache.xpath.XPath.<init>(XPath.java:266) 
at org.apache.xpath.jaxp.XPathImpl.eval(XPathImpl.java:195) 
at org.apache.xpath.jaxp.XPathImpl.evaluate(XPathImpl.java:281) 
+1

あなたの*実際の* XMLと*実際の* XPathまたはXSLTを表示せずに、例外を表示することはまったく役に立ちません。 – Tomalak

+1

例外で判断すると、プログラムを実行したのと同じ入力が表示されていません。入力を行うか、サンプル入力でプログラムを実行するかを表示してください。 –

答えて

1

ごめんみんなの問題は、表現形式は「/」が欠落しています。..でした。だから私の間違い。私は謝罪します。

0

なぜこのような複雑なXPathを使いますか?この1

String expression = "//b[.=14]"; 

を試すか、あなたは正しい階層をチェックしなければならない場合は、この1:

String expression = "/As/a/Bs/b[.=14]"; 
関連する問題