9

私は次のようなxmlを持っています

<root xmlns:ns1="http://foo">
    <ns1:child1>Text</ns1:child1>
    <ns1:child2>Number</ns1:child2>
</root>

これを別の人から受け取ったので、たとえば人2が同じ構造の別のメッセージを送ってくれます。

<root xmlns:anotherNs="http://foo">
    <anotherNs:child1>Another Text</anotherNs:child1>
    <anotherNs:child2>Another Number</anotherNs:child2>
</root>

したがって、唯一の違いは名前空間の名前です。1つのXPath式で両方のxmlのchild2のコンテンツを選択するにはどうすればよいですか?

「/root/child2」や「//child2」のようなものは機能しませんでした。

4

2 に答える 2

21

local-name()次のような関数を使用します。

//*[local-name()='child2']
于 2013-02-28T16:01:40.097 に答える
1

任意のプレフィックス(バナナなど)を名前空間にバインドできます。ソースドキュメントで使用されている名前空間プレフィックスに関係なく"http://foo"、式/root/banana:child2はchild2要素を検索します。名前空間URIのみが一致する必要があります。

于 2013-02-28T16:50:55.910 に答える