2

私はVB.net(2003)を使用しており、xmlドキュメントでSelectNodesメソッドを呼び出しています。
ドキュメントがある場合:

<InqRs>  
  <DetRs>  
    <RefInfo>  
      <RefType>StopNum</RefType>  
      <RefId>0</RefId>  
    </RefInfo>  
    <RefInfo>  
      <RefType>Id</RefType>  
      <RefId>0</RefId>  
    </RefInfo>  
  </DetRs>  
  <DetRs>  
    <RefInfo>  
      <RefType>StopNum</RefType>  
      <RefId>0</RefId>  
    </RefInfo>  
    <RefInfo>  
      <RefType>Id</RefType>  
      <RefId>1</RefId>  
    </RefInfo>  
  </DetRs>  
</InqRs>

DetRs持っているものRefType=IdRefId=0つまり上記の「最初の」ものだけを選択するにはどうすればよいですか?

私は、とりわけ、いくつかの異なる試みを試みました:

InqRs/DetRs[RefInfo/RefType='Id' and RefInfo/RefId='0']  
InqRs/DetRs[RefInfo/RefType='Id'][RefInfo/RefId='0']  

ただし、これらは両方のDetRセクションを選択します(StopNum RefIdが0であるため、私は推測します)。

4

2 に答える 2

3

DetRs最上位要素のすべての子が必要です。

    /*/DetRs

子供がいるRefInfo

    /*/DetRs
             [RefInfo]

RefType値 " " を持つId:

    /*/DetRs
             [RefInfo
                   [ RefType=' Id']
              ]

RefId値が0:

    /*/DetRs
             [RefInfo
                   [ RefType=' Id'
                 and
                   RefId=0
                   ]
              ]

DetRsそして、この XPath 式は、提供された XML ドキュメント内の必要な最初の要素だけを正しく選択します。

確かに、誰かが他の文体の好みを持っている場合、上記の表現は次のようにも書くことができます。

    /*/DetRs[RefInfo[RefType='Id' and RefId=0]]

于 2008-12-14T18:44:40.900 に答える
1

そのようです。XPath式に最上位のInqRは必要ありませんが、問題はありません。DetRについても気にしないかもしれませんが、気にすると仮定すると、「次の仕様を持つRefinfo要素の親を教えてください」と言いたいと思います。

DetRs/Refinfo[RefType='Id' and RefId='0']/..
于 2008-12-13T23:53:29.937 に答える