我有一个我正在尝试解析的XML文档。这是它的样子(只是这里的格式,没有数据):
<objectdata>
<title></title>
<assignableunit>
<other></other>
<other></other>
<text></text>
<name></name>
</assignableunit>
</objectdata>
我计划做的是循环遍历xml文档并对每个元素进行操作。例如,如果元素是<assignableunit>
,我会调用代码来处理该特定元素。如果元素是<text>
,我会调用代码来对其进行操作。
var xdoc = XDocument.Load("Items.xml");
foreach (XElement element in xdoc.Descendants("objectdata"))
{
//if element is <assignableunit>...
//if element is <other>...
//if element is <name>...
//etc...
}
我想可能使用开关/案例来确定元素的类型是否有效,但我无法弄清楚如何确定元素的类型。有人能指出正确的方向吗?我没有处理过很多XML文件。
答案 0 :(得分:3)
element.Name.LocalName
应该能得到你想要的东西。
http://msdn.microsoft.com/en-us/library/system.xml.linq.xname.localname(v=vs.110).aspx
答案 1 :(得分:1)
由于您使用的是XElement
而不是XmlNode
或XmlElement
许多教程/示例所使用的内容,因此您需要使用Name
属性XName
1}}对象。非linq对象将这些属性划分为单独的属性,例如Name
和LocalName
,而XElement
使用XName
类型组合。
if (element.Name.LocalName == "title")
{
// Do something with title data
}
else if (element.Name.LocalName == "assignableunit")
{
// Do something with assignableunit data
foreach(XElement childElement in element.Descendents())
{
if (childElement.Name.LocalName == "other")
{
}
else if (........)
{
}
}
}