3

私は XML を初めて使用し、HttpWebResponse から XML 応答を読み取るのに問題があります。

返された応答は次のとおりです。

<RESPONSE version="1.2">
 <RESULTS>
  <AN an_type="C" 
  an_id="783hdryfdg56a2" 
   an_num="1" 
    an_status="100" />
  <RESULTS>
</RESPONSE>

an_id 値を抽出してリストに保存しようとしています。これを始めましたが、for xmlnodelist を int として取得しているようですが、nodes["an_id"] は文字列であると考えています

List<int> IDs = new List<int>();
XmlDocument doc = new XmlDocument();
doc.LoadXml(returnValue);
XmlNodeList nodes = doc.SelectNodes("SEARCH_RESULTS/LOAN");
LoanIDs.Add(Convert.ToInt32(nodes["an_id"].InnerText));

また、an_id がリストに追加された後の方法でもあります。リスト内の foreach アイテムは、次のように新しい xml のパラメーターとして使用します。

<INPUT>
        <LOGIN API_ID=""cat"" API_PASSWORD=""dog"" />
    <REQUEST>
         <AN an_id=""@anID"" />  
         <AN an_id=""@anID"" />
        ....foreach one in list it adds a new node with the value
    </REQUEST>
</INPUT>
4

1 に答える 1

4

xmlXMLコードを使用した文字列である場合:

var ids = XDocument.Parse(xml).
    Descendants("AN").
    Select(e => (string)e.Attribute("an_id")).
    ToList();

ただし、サンプルからは、属性が常に整数であるようには見えませんでした。あなたの変換について確信がありますか?最新のコメントを受けて、属性のキャストを (string) に変更しました。

リストを再利用したい場合はcurrent、追加したいものを含む親要素になります。

current.Add(ids.Select(i => new XElement("AN", new XAttribute("an_id", i))));
于 2012-12-20T19:56:41.810 に答える