查询第一个节点以某个声明开头的XML

时间:2011-01-07 21:55:25

标签: linq-to-xml

使用linq to xml查询xml我没有问题,但我有这个特殊的xml文件,其第一个节点以声明开头。如果没有缩减(例如:xmlns:dm0 =“http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core”)  我只是使用decandents开始查询数据。我的问题是如何查询xml ex:使用以下格式获取'forbiddenNamespaceDependencies'的值:

<?xml version="1.0" encoding="utf-8"?>

<layerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core">


<layers>
<layer Id="6c1b89f1-9204-4914-a721" name="Layer1" forbiddenNamespaceDependencies="NameSpace1">
  <references>...

1 个答案:

答案 0 :(得分:0)

我看不出问题所在。我拿了你的代码片段并添加了结束标记,以便得到一个结构良好的XML文档:

<?xml version="1.0" encoding="utf-8"?>

<layerModel xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core">


  <layers>
    <layer Id="6c1b89f1-9204-4914-a721" name="Layer1" forbiddenNamespaceDependencies="NameSpace1">
      <references>
        ...
      </references>>
    </layer>
  </layers>
</layerModel>

然后是以下C#代码

    XDocument doc = XDocument.Load(@"..\..\XMLFile1.xml");
    Console.WriteLine(doc.Root.Element("layers").Element("layer").Attribute("forbiddenNamespaceDependencies").Value);

输出“forbiddenNamespaceDependencies”属性的值就好了,根元素上的名称空间声明无关紧要,因为样本中没有元素或属性在该名称空间中。

如果您仍有问题,请考虑发布足够的详细信息,以便我们重现问题。