2017-03-12 11 views
0

私はjavaを介してxml解析を開始しました。私はかなりの時間の間、以下の問題に悩まされており、何か助けが必要です。xpathをxpathでコンパイルしている間に問題が発生しました

私はこのような(xml文書の小さな表現)ちょっとしたものを持っています。

`<shipto> 
    <name>Ola Nordmann</name> 
    <address>Langgt 23</address> 
    <city>4000 Stavanger</city> 
    <country>Norway</country> 
    </shipto> 
    <item id="2"> 
    <title>Empire Burlesque</title> 
    <note>Special Edition</note> 
    <quantity>1</quantity> 
    <price>10.90</price> 
    </item> 
    <item> 
    <title>Hide your heart</title> 
    <quantity>1</quantity> 
    <price>9.90</price> 
    </item>` 

属性 'id = "2"'が存在する場合、ペイロードを検索しようとしています。以下は

私は、XPathのコンパイルに使用しています正規表現です:

XPathExpression式expr = xpath.compile( "// * [ID @ = \" 2 \ "]");

<title>Empire Burlesque</title> <note>Special Edition</note> <quantity>1</quantity> <price>10.90</price>

どのように私はこの結果を達成します:

問題:私は唯一の必要がある場合 この正規表現は、私に

`<item id="2"> 
    <title>Empire Burlesque</title> 
    <note>Special Edition</note> 
    <quantity>1</quantity> 
    <price>10.90</price> 
    </item>` 

を与えますか?

この質問は、私がjavaのxml解析を勉強しようとしているので、本当にばかげている可能性があります。事前にお手伝いしていただきありがとうございます。

+0

XPath式は正規表現ではありません。人々があなたの質問を理解するのに役立つので、正しい用語を学ぶのは良い考えです。 –

+0

本当に残念です。私が言及したように、ちょうどこれで始まります。私はこれを念頭に置いておく(新しいことを学んだ:)) – rahi

答えて

0

使用この行はサブノードを取得する:

XPathExpression expr = xpath.compile("//*[@id=\"2\"]/*"); 

結果:

<title>Empire Burlesque</title> 
<note>Special Edition</note> 
<quantity>1</quantity> 
<price>10.90</price> 

この式は、属性値= 2@idを持つすべての<item>の要素のすべての子を返します。

+0

こんにちはzx485、これは間違いなく助けられましたが、問題は "id = 2"も他のタグにも存在する可能性があります。 'これはテスト'です。以前は、これがクエリで検出されました。今、/ *を追加した後、私はこの結果を得ません。私は、利用可能な子ノードがある場所にしか到達しません。 – rahi

+0

nvm、私はそれを考え出した。本当にありがとうzx485。 – rahi

関連する問題