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

发布于 2024-09-13 04:52:59 字数 897 浏览 8 评论 0原文

我试图掌握 VB.Net 的 linq to xml '内联查询语法' 功能

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

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

这个 xml,当加载到 XDocument 中时,可以按如下方式加载和查询:

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

然后我更改示例 xml 文件中的 元素:

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

现在我似乎无法再使用方便的“Axis Properties”语法...我只能让它使用显式 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)

I'm trying to grasp the linq to xml 'inline query syntax' features of VB.Net

First I tried with this simple xml file:

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

This xml, when loaded in an XDocument, can be loaded and queried as follows:

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

Then I change the <Root> element in the sample xml file to:

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

Now I can't seem to use the convenient 'Axis Properties' syntax anymore... I can only get it to work with the explicit XElement syntax:

    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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我三岁 2024-09-20 04:52:59

我在这里找到了答案

起初,我不知道这一点句法特征被称为“轴属性”。

我必须为 xml 命名空间添加 Imports 语句:

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

然后您可以使用以下命令进行查询:

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

I found the answer here

At first, I didn't know this syntactic feature was called "Axis Properties".

I had to add an Imports statement for the xml namespace:

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

Then you can query with:

xdoc.Root.<ns:Child>.@Name
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文