0

私はこの種のXMLを持っています:

<?xml version="1.0" encoding="UTF-8"?>
<documentAnswer xmlns="http://schemas.pkh.hr/doc/2013/documents/rda_30" domainName="rda" domainVersion="3.0">
<answerTimestamp>2013-08-21T13:35:25.894</answerTimestamp>
<correct>
    <docId>RDA2_29F81D27-1409BE49E2E-7FF8</docId>
    <attachments>
        <attachment>
            <format>application/pdf</foraat>
            <generatedType>StampanNaBlanko</generatedType>
            <encodedPdf>JVBERiYKJSVFT0YK</encodedPdf>
        </attachment>
    </attachments>
</correct>

これらの添付タグは、1 つ以上にすることができます。Javaで添付タグのNodeIteratorを取得しようとしています

XPathAPI.selectNodeIterator(node, "/documentAnswer/correct/attachments/attachment")

そして繰り返しますが、私は成功していません。問題は xpath にあり、名前空間に関連していると推測していますが、解決方法がわかりません。この種の xpath を試してみましたが、成功しませんでした:

XPathAPI.selectNodeIterator(node, "/rda:documentAnswer/correct/attachments/attachment", "rda", " http://schemas.pkh.hr/doc/2013/documents/rda_30 ")

4

3 に答える 3

1
/rda:documentAnswer/correct/attachments/attachment

rdaここでは、名前空間をルート要素にのみ割り当てていますが、XML では既定の名前空間として宣言されています。したがって、すべての要素はその名前空間にあります。使用する必要があります

/rda:documentAnswer/rda:correct/rda:attachments/rda:attachment

残念ながら、XPath 標準はデフォルトの名前空間の宣言をサポートしていません。

于 2013-08-21T12:34:49.000 に答える
0

必要に応じて、次の方法で名前空間を無視して取得できます。

/*:documentAnswer/*:correct/*:attachments/*:attachment
于 2013-08-21T13:48:17.093 に答える
0

3種類のアプローチ:

A-local-names() だけでなく、クエリ QNames の名前空間を埋め込む

修正されたヘッダー付き:

<ns0:documentAnswer xmlns:ns0="http://schemas.pkh.hr/doc/2013/documents/rda_30" domainName="rda" domainVersion="3.0">

xpath

    /ns0:documentAnswer

local-name() 関数を使用してローカル名のみを B クエリする

    /*[local-name()="documentAnswer"]

C-Query ローカル名と名前空間 (QName のクエリ)

    /*[local-name()="documentAnswer" and namespace-uri()='http://schemas.pkh.hr/doc/2013/documents/rda_30']

http://nealwalters.blogspot.fr/2005/01/common-xpath-examples-questions-issues.htmlを参照してください。

于 2013-08-21T12:32:31.703 に答える