0

デフォルトの名前空間を含む子ノードにアクセスする必要があります。使用している名前空間を含むルート ノード IFX にアクセスするには

//ns:IFX/ns:BankSvcRs/ns:RqUID

しかし、今は <severity>and<SPName>とにアクセスする必要があります<CardEmbossNum>

<IFX xmlns="http://www.ifxforum.org/IFX_150">

    <BankSvcRs>
        <RqUID>124566665222</RqUID>
        <com.bac:CardAddRs xmlns:com.bac="http://www.fnf.com/xes/bac">
            <Status>
                <Severity>Info</Severity>

            </Status>
            <RqUID>124566665222</RqUID>
            <com.fnf:CardId xmlns:com.fnf="http://www.fnf.com/xes">
                <CustId>
                    <SPName>com.fnf.xes.BOSS</SPName>
                     <CardLogicalData>
                        <CardEmbossNum/>
                        <Name>SpiderMAN</Name>
                    </CardLogicalData>
                </CustId>
            </com.fnf:CardId>
            <com.bac:CardInfo>
                <com.bac:CardAssociation/>
            </com.bac:CardInfo>
            <com.fnf:CardRec xmlns:com.fnf="http://www.fnf.com/xes">
                <com.fnf:CardId>
                    <CustId>
                        <SPName/>
                        <CardLogicalData>
                            <CardEmbossNum>00000000000000000</CardEmbossNum>
                        </CardLogicalData>
                    </CustId>
                </com.fnf:CardId>
                <com.fnf:CardStatus>
                    <StatusCode>0</StatusCode>
                    <StatusDesc>Fail</StatusDesc>
                </com.fnf:CardStatus>
            </com.fnf:CardRec>
        </com.bac:CardAddRs>
    </BankSvcRs>
</IFX>
4

1 に答える 1

2

使用している API で必要な名前空間を宣言してから、次のようなものを使用する必要があります。

/ns:IFX/ns:BankSvcRs/com.fnf:CardId/ns:Status/ns:Severity

または、次のようなこともできます。

/ns:IFX/ns:BankSvcRs/*/ns:Status/ns:Severity

または、本当にしたい場合:

/ns:IFX/ns:BankSvcRs/*[local-name() = 'CardAddRs']/ns:Status/ns:Severity

個人的には、local-name()名前空間を適切に使用して回避する方法として使用することは、良い習慣ではないと思います。

この XPath を使用しているコードを私たちに示していないので、それ以上の情報がなくても提供できるのはこれだけです。

于 2013-03-07T09:42:36.003 に答える