2017-05-26 15 views
1

次は私のcXMLデータであり、xmlペイロードリクエストからxmlnodeslistにcxmlデータをロードすることができます。次に、xmlnodeslistからすべてのサブノードを読み込みたいのですが、 xmlnodeslistと私のcXMLデータにxmlデータを読み込むために使用しています。ここでxmlノードリストからサブノードを読むにはC#

XmlDocument doc = new XmlDocument(); 
     doc.Load(request.Content.ReadAsStreamAsync().Result);   
     string s = doc.DocumentElement.OuterXml;   
     doc.LoadXml(s); 

     XmlNodeList nodes = doc.DocumentElement.SelectNodes("//Credential"); 

     StringBuilder yourString = new StringBuilder(); 
     yourString.Append("The Products available are : ");   
     foreach (XmlNode node in nodes) 
     { 
      yourString.Append(node["Name"].InnerText + ",");    
     } 
     log.Debug("hemanth===========> outer" + yourString); 
     return request.CreateResponse(HttpStatusCode.OK); 

は、私のcXMLデータは

<?xml version="1.0"?> 
<cXML timestamp="2017-04-06T05:44:31-04:00" version="1.2.0025" payloadID="ddae78e3-20b0-4f9d-91b8-7ca854f27568" xml:lang="en-US"> 
    <Header> 
    <From> 
     <Credential domain="NetworkId"> 
     <Identity>FakeIdentity</Identity> 
     </Credential> 
    </From> 
    <To> 
     <Credential domain="NetworkId"> 
     <Identity>FakeIdentity1</Identity> 
     </Credential> 
    </To> 
    <Sender> 
     <Credential domain="NetworkId"> 
     <Identity>FakeIdentity3</Identity> 
     <SharedSecret>78910</SharedSecret> 
     </Credential> 
     <UserAgent>ServiceChannel Agent</UserAgent> 
    </Sender> 
    </Header> 
    <Request> 
    <OrderRequest> 
     <OrderRequestHeader orderID="79491774" orderDate="2017-02-01T05:07:33-05:00" type="new"> 
     <Total> 
      <Money currency="USD">700</Money> 
     </Total> 
     <ShipTo> 
      <Address addressID="0000000000"> 
      <Name xml:lang="en-US">2115</Name> 
      <PostalAddress name="Prudential Center"> 
       <DeliverTo>fatiha</DeliverTo> 
       <Street>800 Boylston Street Suite 179 800 Boylston Street Suite 179</Street> 
       <City>Boston</City> 
       <State>MA</State> 
       <PostalCode>02199</PostalCode> 
       <Country isoCountryCode="US">US</Country> 
      </PostalAddress> 
      <Email name="default">[email protected]</Email> 
      <Phone name="work"> 
       <TelephoneNumber> 
       <CountryCode isoCountryCode="US">1</CountryCode> 
       <AreaOrCityCode>617</AreaOrCityCode> 
       <Number>111111</Number> 
       </TelephoneNumber> 
      </Phone> 
      </Address> 
     </ShipTo> 
     <BillTo> 
      <Address addressID="0000000000"> 
      <Name xml:lang="en-US">2115</Name> 
      <PostalAddress name="Prudential Center"> 
       <DeliverTo>fatiha</DeliverTo> 
       <Street>800 Boylston Street Suite 179 800 Boylston Street Suite 179</Street> 
       <City>Boston</City> 
       <State>MA</State> 
       <PostalCode>02199</PostalCode> 
       <Country isoCountryCode="US">US</Country> 
      </PostalAddress> 
      <Email name="default">[email protected]</Email> 
      <Phone name="work"> 
       <TelephoneNumber> 
       <CountryCode isoCountryCode="US">1</CountryCode> 
       <AreaOrCityCode>617</AreaOrCityCode> 
       <Number>2476959</Number> 
       </TelephoneNumber> 
      </Phone> 
      </Address> 
     </BillTo> 
     <Extrinsic name="SubscriberID">2000000000</Extrinsic> 
     <Extrinsic name="StoreNumber">0000</Extrinsic> 
     <Extrinsic name="UserOrgDept">2000000000_0000</Extrinsic> 
     <Extrinsic name="StoreEmail">[email protected]</Extrinsic> 
     <Extrinsic name="StorePhone">000-000-0000</Extrinsic> 
     </OrderRequestHeader> 
     <ItemOut quantity="1" lineNumber="0"> 
     <ItemID> 
      <SupplierPartID>00000000</SupplierPartID> 
      <SupplierPartAuxiliaryID/> 
     </ItemID> 
     <ItemDetail> 
      <UnitPrice> 
      <Money currency="USD">41.4700</Money> 
      </UnitPrice> 
      <Description xml:lang="en-US">Heavy Duty Box Sealing Tape - CLEAR</Description> 
      <UnitOfMeasure>EA</UnitOfMeasure> 
      <Classification domain="SupplierPartID">00000000</Classification> 
     </ItemDetail> 
     </ItemOut> 
     <ItemOut quantity="2" lineNumber="1"> 
     <ItemID> 
      <SupplierPartID>000000</SupplierPartID> 
      <SupplierPartAuxiliaryID/> 
     </ItemID> 
     <ItemDetail> 
      <UnitPrice> 
      <Money currency="USD">33.1500</Money> 
      </UnitPrice> 
      <Description xml:lang="en-US">Padded Mailers 9-1/2"X14-1/2"</Description> 
      <UnitOfMeasure>EA</UnitOfMeasure> 
      <Classification domain="SupplierPartID">000000</Classification> 
     </ItemDetail> 
     </ItemOut> 
     <ItemOut quantity="1" lineNumber="2"> 
     <ItemID> 
      <SupplierPartID>000000</SupplierPartID> 
      <SupplierPartAuxiliaryID/> 
     </ItemID> 
     <ItemDetail> 
      <UnitPrice> 
      <Money currency="USD">27.5000</Money> 
      </UnitPrice> 
      <Description xml:lang="en-US">Bubble Mailers 12-1/2" x 19"</Description> 
      <UnitOfMeasure>EA</UnitOfMeasure> 
      <Classification domain="SupplierPartID">000000</Classification> 
     </ItemDetail> 
     </ItemOut> 
     <ItemOut quantity="1" lineNumber="3"> 
     <ItemID> 
      <SupplierPartID>00000000</SupplierPartID> 
      <SupplierPartAuxiliaryID/> 
     </ItemID> 
     <ItemDetail> 
      <UnitPrice> 
      <Money currency="USD">40.5000</Money> 
      </UnitPrice> 
      <Description xml:lang="en-US">Pallet Shrinkwrap</Description> 
      <UnitOfMeasure>EA</UnitOfMeasure> 
      <Classification domain="SupplierPartID">00000000</Classification> 
     </ItemDetail> 
     </ItemOut> 
    </OrderRequest> 
    </Request> 
</cXML> 

誰もがこれを行うのを助けることができる

おかげで、 ヴェンカトです。

+0

あなたはあなたのforループ内のすべてのサブノードを読んでいるように見えます。あなたが現在できていないサブノードとは何をしたいですか? –

+0

たとえば、これで私はタイムスタンプ値とpayloadId値が必要です..私はcxmlからすべての値が必要なのですか?だから私はそれをどうやって説明してくれるの?事前に感謝、venkat – Venkat

+0

XmlNodeList nodes = doc.DocumentElement.SelectNodes( "// Credential");あなたは上記のノードを読んでください動作するように私にお勧めしますか? – Venkat

答えて

0

これを試してみてください:

string timeStamp = node.Attributes["timestamp"].Value; 

たとえば、これはすべての資格「ドメイン」と彼らのアイデンティティ値を出力します:

XmlNodeList nodes = doc.DocumentElement.SelectNodes("//Credential"); 

foreach (XmlNode node in nodes) 
{ 
    var identity = node.SelectSingleNode("Identity").InnerText; 
    yourString.Append(node.Attributes["domain"].Value + "|" + identity + ",");    
} 
+0

foreach(ノードのXmlNodeノード) { yourString.Append(ノード["Name"]。InnerText + "、"); }ここでノードは何も得られず、ポインタはforeachブロックに入っていません – Venkat

+0

まず、あなたが望む正確なノードを見つけなければなりません。そして、私の答えでコードを実行します。 –

+0

XmlNodeListノード= doc.DocumentElement.SelectNodes( "// Credential");あなたは上記のノードを読んでください動作するように私にお勧めしますか? – Venkat