0

私はいくつかのXMLを使用していますが、技術的な傾向はあまりなく、インターネット上のさまざまなソースを読んでこれを理解しようとしていますが、どこにも速くは行きません。

私は以下のXMLを持っています:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Header>
      <XXXSoapHeader xmlns="http://XXX.com/optima/webservices">
         <AuthenticationString>?</AuthenticationString>
      </XXXSoapHeader>
   </soap:Header>
   <soap:Body>
      <SubmitMultipleCalcMarginRequestResponse xmlns="http://XXX.com/optima/webservices">
         <SubmitMultipleCalcMarginRequestResult>
            <TaskExecutionSubmitInfo>
               <taskExecutionId>74457</taskExecutionId>
               <description>Calc LIVE BROKER margin : Account WebServiceTest_Account1(435) : Business Date (12-Feb-2007)</description>
            </TaskExecutionSubmitInfo>
            <TaskExecutionSubmitInfo>
               <taskExecutionId>74458</taskExecutionId>
               <description>Calc LIVE BROKER margin : Account WebServiceTest_Account2(436) : Business Date (12-Feb-2007)</description>
            </TaskExecutionSubmitInfo>
         </SubmitMultipleCalcMarginRequestResult>
      </SubmitMultipleCalcMarginRequestResponse>
   </soap:Body>
</soap:Envelope>

そして、ノードから情報を抽出するために以下を使用しています:

//*[name() = 'taskExecutionId']

どちらが返されますか:

<?xml version="1.0" encoding="UTF-8"?>

<root xmlns="http://XXX.com/optima/webservices">
  <taskExecutionId>74457</taskExecutionId>
  <taskExecutionId>74458</taskExecutionId>
</root>

しかし、2番目のtaskExecutionIdだけを返したい場合はどうすればよいですか?または最初の?[n]を付けて追加しようとしましたが、機能しません。何か案は?

4

1 に答える 1

0

XMLドキュメント全体でN番目のインスタンスを取得するには、次のXPathを使用できます。

(//*[name() = 'taskExecutionId'])[N]

かっこが必要です。それらがなければ、特定の親の下でN番目を選択することになります。taskExecutionId

于 2013-01-18T11:37:42.560 に答える