确定XDocument中的元素

时间:2014-01-17 16:53:14

标签: c# xml

我有一个我正在尝试解析的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文件。

2 个答案:

答案 0 :(得分:3)

element.Name.LocalName应该能得到你想要的东西。

http://msdn.microsoft.com/en-us/library/system.xml.linq.xname.localname(v=vs.110).aspx

答案 1 :(得分:1)

由于您使用的是XElement而不是XmlNodeXmlElement许多教程/示例所使用的内容,因此您需要使用Name属性XName 1}}对象。非linq对象将这些属性划分为单独的属性,例如NameLocalName,而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 (........)
      {
      }
  }
}