以下のWeb API XMLレスポンスから "cust_name"と "code"ノードを取得しようとしています。C#のXML文字列から特定のノードを取得する方法
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cust_list xmlns="http://example.com">
<cust>
<cust_id>1234</cust_id>
<cust_name>abcd</cust_name>
<cust_type>
<code>2006</code>
</cust_type>
</cust>
</cust_list>
レスポンスをXMLDocumentに文字列として書き込み、そこから読み取ろうとしています。以下は私のコード
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://serviceURI");
request.Method = "GET";
request.ContentType = "Application/XML";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
string responseValue = reader.ReadToEnd();
var doc = new XmlDocument();
doc.LoadXml(responseValue);
string node = doc.SelectSingleNode("/cust_list/cust/cust_name").InnerText;
string node2 = doc.SelectSingleNode("/cust_list/cust/cust_type/code").InnerText;
}
私は特定のノードをターゲットにしようとしているが、取得エラー「オブジェクト参照がオブジェクトのインスタンスに設定されていません」です。私はここで間違って何をしていますか?この例では
これが原因名前空間の一部にほぼ確実です。 LINQ to XMLを使用したくない理由があれば、名前空間の扱いが簡単になります。 –
ここに答えです:http://stackoverflow.com/a/4171468/126995 – Soonts
[XmlDocument.SelectSingleNodeとxmlNamespaceの問題の可能な複製](http://stackoverflow.com/questions/4171451/xmldocument-selectsinglenode-and-xmlnamespace -issue) – Soonts