属性とネストされたXMLをどのように読み取ることができますか?私は原則を理解していないので、実際の例でこれを教えたいと思います。属性とネストされたXMLを読み取るにはどうすればいいですか
ソースXML:私はDataTableのに追加するユーザーのUUID属性と、すべてのノードを読みたい
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:listUserResponse xmlns:ns="http://www.cisco.com/AXL/API/11.5">
<return>
<user uuid="{A00B47CC-0C4F-40E7-1E25-22E54FBA4596}">
<firstName>Name1</firstName>
<middleName />
<lastName>Surname1</lastName>
<primaryExtension>
<pattern>201</pattern>
</primaryExtension>
</user>
<user uuid="{834E86FA-FDC2-21FE-1E1E-FD164AF23B44}">
<firstName>Name2</firstName>
<middleName />
<lastName>Surname2</lastName>
<primaryExtension>
<pattern>202</pattern>
</primaryExtension>
</user>
<user uuid="{798E04E7-0E10-0278-6FAD-EA6A85EF2B2E}">
<firstName>Name3</firstName>
<middleName />
<lastName>Surname3</lastName>
<primaryExtension>
<pattern>203</pattern>
</primaryExtension>
</user>
</return>
</ns:listUserResponse>
</soapenv:Body>
</soapenv:Envelope>
。しかし、私は、私は属性とネストされたXMLを読むことができるかわからない(エラー:「オブジェクト参照がオブジェクトインスタンスに設定されていません。」)
マイコード:
XmlDocument xmldocListUser = new XmlDocument();
xmldocListUser.LoadXml(soapresultListUser);
// prepare data (like database)
DataTable datatableListUser = new DataTable();
datatableListUser.Clear();
datatableListUser.Columns.Add("uuid");
datatableListUser.Columns.Add("firstName");
datatableListUser.Columns.Add("middleName");
datatableListUser.Columns.Add("lastName");
datatableListUser.Columns.Add("primaryExtensionPattern");
XmlNodeList xnList = xmldocListUser.SelectNodes("//return/user");
foreach (XmlNode xn in xnList)
{
DataRow myDataRow = datatableListUser.NewRow();
myDataRow["firstName"] = xn["firstName"].InnerText;
myDataRow["middleName"] = xn["middleName"].InnerText;
myDataRow["lastName"] = xn["lastName"].InnerText;
// error
//myDataRow["uuid"] = xn["@uuid"].InnerText;
// error
//string xnDN = xn.SelectSingleNode("//primaryExtension/Pattern").InnerXml;
// error
//XmlElement xmlelementEndUserUserId = xmldocGetPhone.DocumentElement;
//string strEndUserUserId = xn.SelectSingleNode("/primaryExtension/Pattern").InnerXml;
//myDataRow["primaryExtensionPattern"] = strEndUserUserId; // xn["/primaryExtension/Pattern"].InnerText;
datatableListUser.Rows.Add(myDataRow);
}
はありがとうと最高敬具、 Petr