質問

選択した述語を使用してXPath式を持っています 入れ子になった要素内からの人の名前とID XPathNavigator.Selectメソッド

これは機能します:

root/all_clients/client/client_name_and_ID[client_ID = 'xxx']
.

これは機能します:

root/all_clients/client[client_name_and_ID/client_ID = 'xxx']/client_name_and_ID
.

次のレベルに述語を取るときは機能しません。

root/all_clients[client/client_name_and_ID/client_ID = 'xxx']/client/client_name_and_ID
.

フィルタリングはありませんが、セット全体がありません。

ASP.NET内で、XPath内の固有の制限によりこれは または私は愚かなことをしていますか?

以下のXMLファイルからのスニペット:

<?xml version="1.0" encoding="utf-8"?>

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="file:///n:\Projects\XML\Medical\Example_01.xsd">

<all_clients>

    <client>
        <client_name_and_ID>
            <first_name>Fred</first_name>
            <middle_name>James</middle_name>
            <last_name>Bowman</last_name>
            <client_ID>1</client_ID>
        </client_name_and_ID>
    </client>

    <client>
        <client_name_and_ID>
            <first_name>Mark</first_name>
            <middle_name>David</middle_name>
            <last_name>Colder</last_name>
            <client_ID>2</client_ID>
        </client_name_and_ID>
    </client>

    <client>
        <client_name_and_ID>
            <first_name>Joe</first_name>
            <last_name>Lewis</last_name>
            <client_ID>3</client_ID>
        </client_name_and_ID>
    </client>

    <client>
        <client_name_and_ID>
            <first_name>Sam</first_name>
            <last_name>Plank</last_name>
            <client_ID>4</client_ID>
        </client_name_and_ID>
    </client>
</all_clients>

</root>
.

役に立ちましたか?

解決

最後のクエリは、その下に任意の matchingクライアントを含むall_clients要素と一致しています。その後、フィルタが適用されずにこのALL_CLIENTSの下のクライアントを選択するため、クライアント要素の を選択します。

XPathの末尾にフィルタを保存する必要があります。最初に必要な要素の種類を選択してから、それらの要素にフィルタを適用します。これらのXPathを試してください:

<!-- Select client_ID element. -->
root/all_clients/client/client_name_and_ID/client_ID[. = 'xxx']

<!-- Select client_name_and_ID element. -->
root/all_clients/client/client_name_and_ID[client_ID = 'xxx']

<!-- Select client element. -->
root/all_clients/client[client_name_and_ID/client_ID = 'xxx']
.

他のヒント

それは普通です。すべてのclientノードは、all_clientsノードの子です。したがって、それは常に「all_clientsという名前のすべての要素」がコード化したものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top