从XML文档中选择节点类型

时间:2013-03-19 06:03:36

标签: c# xml linq linq-to-xml

您好我想要在xml文件中搜索节点并识别文件类型。

XDocument xDococumnetObj = XDocument.Load(filePath);
XElement presentationElement= 
      xDococumnetObj.Descendants()
                    .Where(x => x.Name.LocalName.Equals("collegge"))
                    .FirstOrDefault();

我写了查询,它返回了我的同事节点。但我只是想确定它的文档类型。我想在单个查询中识别文档是否包含{"Collegge","University","Company","Banking"}并仅返回其类型。

1 个答案:

答案 0 :(得分:1)

string[] docTypes = {"Collegge", "University", "Company", "Banking"};
XDocument xdoc = XDocument.Load(filePath);
var docType = docTypes.FirstOrDefault(type => 
                xdoc.Descendants().Any(n => n.Name.LocalName == type.ToLower()));

UPDATE:如果在同一名称空间中声明了所有元素,则可以使用以下代码来避免遍历文件中的所有元素

string[] docTypes = {"Collegge", "University", "Company", "Banking"};
XDocument xdoc = XDocument.Load(filePath);
XNamespace ns = "http://www.foo.org/2013/bar";
var docType = docTypes.FirstOrDefault(type => xdoc.Descendants(ns + type).Any());