1

私の XML ドキュメントは次のようになります。

<?xml version="1.0" encoding="ISO-8859-1"?>
<XCER xmlns="http://www.x.y.z/base" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.x.y.z/base APSchema.xsd" mp_id="56977" ma_id="398" sub_id="54977">
  <final_result OD="DGS=1.7:ADB=2" creator="Px" version="1.1" xsi:type="XCT">
    <code>3040280100331</code>
    <code_cnf>1.0000</code_cnf>
    <code_attr>seq</code_attr>
    <status_attr>fdos</status_attr>
    <text>xxx</text>
    <standardized_text>xxxx</standardized_text>
    <region>
      <type>address</type>
      <symbology>machine</symbology>
    </region>
    <recognized_elements>
      <type>reg</type>
      <nominal>
        <type>reg</type>
        <code>Dx</code>
        <code_cnf>0.0635</code_cnf>
        <location page="3">
          <face>rear</face>
          <polygon>
            <dot x="720" y="709" />
            <dot x="744" y="708" />
            <dot x="744" y="591" />
            <dot x="720" y="592" />
          </polygon>
        </location>
      </nominal>
      <reference>
        <type>reg</type>
        <code>Dx</code>
        <match_cnf>1.0000</match_cnf>
        <attribute>full_match</attribute>
      </reference>
    </recognized_elements>
    <recognized_elements>
      <type>cty</type>
      <reference>
        <type>cty</type>
        <code>Dx 9</code>
        <attribute>derived</attribute>
      </reference>
    </recognized_elements>
    <standardized_elements>
      <type>reg</type>
      <code>Dx</code>
    </standardized_elements>
    <standardized_elements>
      <type>cty</type>
      <code>Dx 9</code>
      <attribute>err</attribute>
    </standardized_elements>
  </final_result>
</XCER>

そして、私はそれを使っていくつかのことをしたいのですが、XPathの使用方法がわかりません.オンラインで見つけた例で必要な特定のケースを見つけることができます. 私の問題は、 Recognized_elements:reference:code にある 'Dxf' を見つけたいのですが、 が 'reg' で が full_match> の場合のみです。

私が持っている動作しない式は次のとおりです。

doc.SelectSingleNode("/x:XCER[0]/x:final_result[@creator = 'Px']/x:recognized_elements/x:reference[type='reg' and attribute='full_match]/x:code", nsmgr).InnerText

私がいつも得るエラーは次のとおりです:「オブジェクト参照がオブジェクトのインスタンスに設定されていません」

4

1 に答える 1

1

必要なのはこれだと思います:

doc.SelectSingleNode("/x:XCER/x:final_result[@x:creator = 'Px']/x:recognized_elements[x:type='reg' and x:reference/x:attribute='full_match']/x:reference/x:code", nsmgr).InnerText

いくつかの場所で名前空間が欠落しており、いくつかの子要素へのフル パスを入力するのを忘れていました。reference/code要素を読むつもりだったのか、要素を読むつもりだったのかわかりませんnominal/code

于 2013-08-21T10:20:43.230 に答える