C# 如何读取属性和嵌套XML
请帮助我解决这个问题,如何读取属性和嵌套XML。我不理解这个原理,我想用真实的例子来教这个 源xml:C# 如何读取属性和嵌套XML,c#,xpath,xml-parsing,C#,Xpath,Xml Parsing,请帮助我解决这个问题,如何读取属性和嵌套XML。我不理解这个原理,我想用真实的例子来教这个 源xml: <?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <ns:listUserResponse xmlns:ns="http://ww
<?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>
谢谢你,并致以最良好的祝愿,
你可以用这样的东西
foreach (XmlNode xn in xnList)
{
string uuid = (xn as XmlElement).GetAttribute("uuid");
string firstName = xn.SelectSingleNode("./firstName").InnerText;
string middleName= xn.SelectSingleNode("./middleName").InnerText;
string lastName = xn.SelectSingleNode("./lastName").InnerText;
string primaryExtensionPattern = xn.SelectSingleNode("./primaryExtensionPattern /pattern").InnerText;
...
}
或者您可以考虑使用LINQ到XML并使用XBelf。对我来说,解析xml似乎更容易
试试xml linqusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable datatableListUser = new DataTable();
datatableListUser.Clear();
datatableListUser.Columns.Add("uuid");
datatableListUser.Columns.Add("firstName", typeof(string));
datatableListUser.Columns.Add("middleName", typeof(string));
datatableListUser.Columns.Add("lastName", typeof(string));
datatableListUser.Columns.Add("primaryExtensionPattern", typeof(int));
XDocument doc = XDocument.Load(FILENAME);
foreach (XElement user in doc.Descendants("user"))
{
datatableListUser.Rows.Add(new object[] {
(string)user.Attribute("uuid"),
(string)user.Element("firstName"),
(string)user.Element("middleName"),
(string)user.Element("lastName"),
(int)user.Descendants("pattern").FirstOrDefault()
});
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
DataTable datatableListUser = new DataTable();
datatableListUser.Clear();
datatableListUser.Columns.Add("uuid");
datatableListUser.Columns.Add("firstName", typeof(string));
datatableListUser.Columns.Add("middleName", typeof(string));
datatableListUser.Columns.Add("lastName", typeof(string));
datatableListUser.Columns.Add("primaryExtensionPattern", typeof(int));
XDocument doc = XDocument.Load(FILENAME);
foreach (XElement user in doc.Descendants("user"))
{
datatableListUser.Rows.Add(new object[] {
(string)user.Attribute("uuid"),
(string)user.Element("firstName"),
(string)user.Element("middleName"),
(string)user.Element("lastName"),
(int)user.Descendants("pattern").FirstOrDefault()
});
}
}
}
}