使用LINQ我从一些XML中获取了四个元素,每个元素可以有不同的名称(Book,Magazine,Article)。
如何获取我正在处理的元素的名称,例如类似下面的 ElementType():
using System;
using System.Linq;
using System.Xml.Linq;
namespace TestXmlElement2834
{
class Program
{
static void Main(string[] args)
{
XElement content = new XElement("content",
new XElement("book", new XAttribute("id", "1")),
new XElement("article", new XAttribute("id", "2")),
new XElement("book", new XAttribute("id", "3")),
new XElement("magazine", new XAttribute("id", "4"))
);
var contentItems = from contentItem in content.Descendants()
select new ContentItem
{
Id = contentItem.Attribute("id").Value
Type = contentItem.ElementType() //PSEUDO-CODE
};
foreach (var contentItem in contentItems)
{
Console.WriteLine(contentItem.Id);
}
Console.ReadLine();
}
}
class ContentItem
{
public string Id { get; set; }
public string Type { get; set; }
}
}
答案 0 :(得分:4)
你想要XElement.Name。
答案 1 :(得分:3)
XElement.Name
你追求的是什么? (使用XName.LocalName
属性然后获取元素名称的本地部分。)
如果你能说出你想要的输出,那会有所帮助:)(我原本认为你的意思是type of node(属性,元素等),但它总是XElement
在你的情况下...)
答案 2 :(得分:1)
试试这个:
var contentItems = from contentItem in content.Descendants()
select new ContentItem
{
Id = contentItem.Attribute("id").Value,
Type = contentItem.Name.LocalName
};