C# Linq到XML在C中查询数据

C# Linq到XML在C中查询数据,c#,linq-to-xml,C#,Linq To Xml,XML 我可以查询诸如EmpID、Name、Salary等字段 但是如何查询地址字段,如街道、城市、州、邮政编码、国家 提前感谢。将XML放入变量并使用Like var Pro = from u in doc.Descendants("Employee") select u; foreach (var x in Pro) { Response.Write(string.Format("EMP ID: {0}, Emp Name: {1}",

XML

我可以查询诸如EmpID、Name、Salary等字段

但是如何查询地址字段,如街道、城市、州、邮政编码、国家


提前感谢。

将XML放入变量并使用Like

var Pro = from u in doc.Descendants("Employee") select u;
        foreach (var x in Pro)
        {
            Response.Write(string.Format("EMP ID: {0}, Emp Name: {1}", x.Element("EmpId"), x.Element("Name")));
        }
创建一个与XML中名称相同的列表,并为包含所有地址字段的地址创建子列表

使用与您使用的相同的查询,但从第一部分中选择


现在,您可以轻松地处理var FirstPart中的数据了,我也会按照Reniuz的建议去做,并将其反序列化到一个对象,但下面是一个示例,说明您目前是如何做的:

XDocument doc = XDocument.Parse(XMLVariableString);    

var FirstPart = from node in doc.Descendants("items") select node; //Select Data from doc using 

List<ListName> valuesNodes = new List<ListName>(); //create any with i.e <==

您试图查找的地址元素可以通过使用x.ElementsAddress首先选择所有地址元素来访问。然后可以使用.element函数选择每个嵌套的地址元素

因此Response.Write的参数应该如下所示:

foreach (var x in Pro)
        {
            Response.Write("EMP ID: {0}, Emp Name: {1}\r\n", x.Element("EmpId"), x.Element("Name"));
            var adrs = x.Descendants("Address");
            foreach (var a in adrs)
            {
                Response.Write("\tAddress Street: {0}, City: {1}\r\n", a.Element("Street"), a.Element("City"));    
            }
        }
使用


是否要查询所有地址、特定地址?请更明确地说明您的需要。我建议您反序列化到您的对象。这样会更好更简单。如何在XML中反序列化对象?对不起,我说不出话来。非常感谢。为什么我们必须先使用?因为每个员工可以有几个地址。First接受First One解释。无法识别元素方法。它只有在x.后裔Saddress.First.ElementStreet时才被识别。为什么?谢谢。好办法。
foreach (var x in Pro)
        {
            Response.Write("EMP ID: {0}, Emp Name: {1}\r\n", x.Element("EmpId"), x.Element("Name"));
            var adrs = x.Descendants("Address");
            foreach (var a in adrs)
            {
                Response.Write("\tAddress Street: {0}, City: {1}\r\n", a.Element("Street"), a.Element("City"));    
            }
        }
x.Elements("Address").Element("Street");
x.Descendants("Address").First().Element("Street")