代码之家  ›  专栏  ›  技术社区  ›  jeroenh

具有xml命名空间的文档的vb.net linq to xml语法

  •  2
  • jeroenh  · 技术社区  · 14 年前

    首先,我尝试使用这个简单的xml文件:

        <?xml version="1.0" encoding="utf-8" ?>
        <Root>
           <Child Name="somename">
              <SomeAttribute>SomeValue</SomeAttribute>
           </Child>
        </Root>
    

    在XDocument中加载此xml时,可以按如下方式加载和查询:

        Dim xdoc = XDocument.Load("sample.xml")
        Console.WriteLine(xml.Root.<Child>.@Name)
    

    <Root> 示例xml文件中的元素:

        <Root xmlns="http://SomeNamespace">
    

    现在我似乎不能再使用方便的'轴属性'语法了。。。我只能使用显式XElement语法:

        Dim ns As XNamespace = "http://SomeNamespace"
        ' works, but I would like to use the same syntax as above...
        Console.WriteLine(xdoc.Descendants(ns + "Child").First().Attribute("Name").Value)
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   jeroenh    14 年前

    我找到了答案 here

    起初,我不知道这个句法特征叫做“轴属性”。

    Imports <xmlns:ns="http://SomeNamespace">
    

    然后您可以通过以下方式进行查询:

    xdoc.Root.<ns:Child>.@Name