0

MSMQ から引き出された eConnect 発信ドキュメントがあり、明細項目をループする必要があります。私はもう試した:

 XmlNodeList nodes = root.SelectNodes("/Sales_History_Transaction/eConnect/SO_Hist_Trans/Line");

(および他のいくつかの試み)成功しませんでした...

XML は次のとおりです。「明細」ノードから明細のコレクションを取得して、明細の詳細を取得するにはどうすればよいですか?

 <Sales_History_Transaction:root>
   <eConnect ACTION="1" Requester_DOCTYPE="Sales_History_Transaction" DBNAME="TWO"        TABLENAME="SOP30200" DATE1="2013-05-03T09:24:09.970" SOPNUMBE="999999" SOPTYPE="3">
      <SO_Hist_Trans>
            <SOPNUMBE>999999</SOPNUMBE>
            <SOPTYPE>3</SOPTYPE>
           <Line>
                <CMPNTSEQ>0</CMPNTSEQ>
                <LNITMSEQ>998777</LNITMSEQ>
                <ITEMNMBR>0099999</ITEMNMBR>
                <ITEMDESC>Laptop</ITEMDESC>
           </Line>
           <Line>
                <CMPNTSEQ>0</CMPNTSEQ>
                <LNITMSEQ>777</LNITMSEQ>
                <ITEMNMBR>0099</ITEMNMBR>
                <ITEMDESC>Desktop</ITEMDESC>
           </Line>
           <Line>
                <CMPNTSEQ>0</CMPNTSEQ>
                <LNITMSEQ>679777</LNITMSEQ>
                <ITEMNMBR>0569</ITEMNMBR>
                <ITEMDESC>Memory</ITEMDESC>
           </Line>
      </SO_Hist_Trans>
    </eConnect>
   </Sales_History_Transaction:root>
4

3 に答える 3

2

xml の形式が正しくありません。

ルート タグは、宣言されていない名前空間Sales_History_Transactionと要素名で構成されているようrootです。Sales_History_Transactionが定義されている行を見逃していませんか?

有効な xml を取得したら、(名前空間に応じて) 次のように単純にする必要があります。

var xdoc = XDocument.Parse(yourXml);
var nodes = xdoc.Descendants("Line");
于 2013-05-07T15:38:27.147 に答える
0

理解した:

XmlNodeList nodes = xmlDocument.GetElementsByTagName("Line");

foreach (XmlNode node in nodes)
{
  string txt = node["ElementName"].InnerText;
}

これは、XML のすべての「Line」要素を列挙します。

于 2013-05-07T18:10:28.410 に答える