0

私の問題は、XPATH ルールが正しく機能しないことです。DataFile 要素の属性 Filename が「thing.xml」ではないすべての XML を選択する必要があります。理解しやすいように、サンプル XML も追加しました。

これは私のXPATHルールです:

/document[transport/sender[code='12345678'] and metaxml/LetterMetaData[Type='invoice'] and SignedDoc/DataFile[@Filename!='thing.xml']]

XPATH ルールで無視するXML は次のとおりです。

<document>
  <transport>
    <sender>
      <code>12345678</code>
    </sender>
  </transport>
  <metaxml>
    <LetterMetaData>
      <Type>invoice</Type>
    </LetterMetaData>
  </metaxml>
  <SignedDoc>
    <DataFile Filename="thing.xml">...</DataFile>
  </SignedDoc>
</document>

XPATH ルールで無視しないようにしたい XML は次のとおりです。

<document>
  <transport>
    <sender>
      <code>12345678</code>
    </sender>
  </transport>
  <metaxml>
    <LetterMetaData>
      <Type>invoice</Type>
    </LetterMetaData>
  </metaxml>
  <SignedDoc>
    <DataFile Filename="file_with_other_name_than_thing.xml">...</DataFile>
  </SignedDoc>
</document>
4

1 に答える 1

0

ルートノード(/)の子はどれですか?ドキュメントが整形式である必要がなくdocument、XPathが評価されていない場合。たとえば、次のXPath:

 /docs/document[SignedDoc/DataFile[not(@Filename!='thing.xml')]]

この入力に適用:

<docs>
    <document>
        <transport>
            <sender>
                <code>12345678</code>
            </sender>
        </transport>
        <metaxml>
            <LetterMetaData>
                <Type>invoice</Type>
            </LetterMetaData>
        </metaxml>
        <SignedDoc>
            <DataFile Filename="thing.xml">...</DataFile>
        </SignedDoc>
    </document>
    <document>
        <transport>
            <sender>
                <code>12345678</code>
            </sender>
        </transport>
        <metaxml>
            <LetterMetaData>
                <Type>invoice</Type>
            </LetterMetaData>
        </metaxml>
        <SignedDoc>
            <DataFile Filename="file_with_other_name_than_thing.xml">...</DataFile>
        </SignedDoc>
    </document>
</docs>

2番目のドキュメントノードのみを返します。rootの子が。であることに注意してくださいdocs

ルートから開始することを選択したくない場合は、以下を使用する必要があります//

 //document[SignedDoc/DataFile[not(@Filename!='thing.xml')]]
于 2011-06-15T06:53:36.033 に答える