すべて、
ドキュメントビルダークラスが複数のテンプレートを使用してデータを正しく挿入できるように、データを入力する必要がある複数のXMLテンプレートがあります。
次の属性を追加して、クラスにデータを挿入するノードを指定します。
id = "root"
XMLの一例
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<SiebelMessage MessageId="07f33fa0-2045-46fd-b88b-5634a3de9a0b" MessageType="Integration Object" IntObjectName="" IntObjectFormat="Siebel Hierarchical" ReturnCode="0" ErrorMessage="">
<listOfReadAudit >
<readAudit id="root">
<recordId mapping="Record ID"></recordId>
<userId mapping="User ID"></userId>
<customerId mapping="Customer ID"></customerId>
<lastUpd mapping="Last Updated"></lastUpd>
<lastUpdBy mapping="Last Updated By"></lastUpdBy>
<busComp mapping="Entity Name"></busComp>
</readAudit>
</listOfReadAudit>
</SiebelMessage>
コード
expr = xpath.compile("//SiebelMessage[@id='root']");
root = (Element) expr.evaluate(xmlDoc, XPathConstants.NODE);
Element temp = (Element) root.cloneNode(true);
この例を使用: 属性値で要素を選択するXPath
式が機能していません:
// SiebelMessage [@ id = 'root']
私が間違っていることは何ですか?
これを試して:
//readAudit[@id='root']
これにより、readAudit
属性がid
に設定されたすべてのroot
要素が選択されます(この場合、要素は1つだけである必要があります)。
次のようにして、最大1つの要素が返されるようにすることができます。
//readAudit[@id='root'][1]
あなたがしているのは、属性id = 'root'を持つSiebelMessageノードを選択することです。
しかし、SiebelMessageにはIDがありません。それは、あなたが後にしているreadAuditです。だからどちらか
//readAudit[id='root']
または
//SiebelMessage//readAudit[id='root']