[英]XML with C# LINQ to XML
以下是XML文档的示例。
<People>
<Person>
<Name>ABC </Name>
<SSN>111111</SSN>
<Address>asdfg</Address>
</Person>
</People>
我需要获取标签名称,而不是标签名称之间的值。 也就是说,在人员标签下,我应该获取Name
, SSN
和Address
节点,而不要获取ABC
, 111111
和asdfg
值。
我需要使用LINQ to XML并在C#中对其进行查询。
我该怎么做?
这将名称返回为字符串列表:
var doc = XDocument.Parse(@"<People>
<Person>
<Name>ABC </Name>
<SSN>111111</SSN>
<Address>asdfg</Address>
</Person>
</People>"
);
var list = doc.Root.Element("Person").Descendants()
.Select(node => node.Name.LocalName).ToList();
如果您使用的是XElement而不是XDocument,则可以从上述代码中删除.Root
并获得正确的结果。
建立课程
public class Person
{
public string Name {get; set;}
public int SSN {get; set;}
public string Address {get; set;}
}
并以此方式创建一个新人;
List<Person> NewPersons = new List<Person>();
XDocument doc = XDocument.Load(xmlFile);
foreach(XElement xElem in doc.Descendants("Person"))
{
NewPersons.Add(new Person
{
Name = xElem. Element("Name").Value,
SSN = xElem.Element("SSN").Value,
Address = xElem.Element("Address").Value,
});
}
你可以这样子得到...
string xml = "<People> <Person> <Name>ABC </Name> <SSN>111111</SSN> <Address>asdfg</Address> </Person> <Person> <Name>ABC </Name> <SSN>111111</SSN> <Address>asdfg</Address> </Person> </People>";
XElement xmlData = XElement.Parse(xml);
foreach(XElement xmlPerson in xmlData.Elements("Person"))
{
List<string> TagsForThisPerson = new List<string>();
foreach(XElement xmlTag in xmlPerson.Elements())
{
TagsForThisPerson.Add(xmlTag.Name.ToString());
}
TagsForThisPerson.Dump();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.