gpt4 book ai didi

xml - 在 XML Linq Select 语句中使用 XNamespace

转载 作者:行者123 更新时间:2023-12-04 16:57:41 27 4
gpt4 key购买 nike

我的代码过去只需要处理一个命名空间,所以这很好用:

Imports <xmlns="http://schema.infor.com/InforOAGIS/2">

Dim doc As XDocument = XDocument.Load("my.xml")

Dim IDElemCollect As IEnumerable(Of XElement) = _
From IdEl In doc ...<ItemID>.<ID> _
Select IdEl

但是现在我要求程序处理更多的文档,其中一些具有不同的命名空间。这个特定的方法只需要处理一个特定的命名空间,所以我虽然写这个可以工作:
Dim doc As XDocument = XDocument.Load("my.xml")
Dim ns As XNamespace = "http://schema.infor.com/InforOAGIS/2"
Dim IDElemCollect As IEnumerable(Of XElement) = _
From IdEl In doc ...<ns:ItemID>.<ns:ID> _
Select IdEl

但是 VS2013 编译器提示说
错误 1 ​​XML 命名空间前缀 'ns' 未定义。

而且,显然,如果我不使用命名空间,我的选择将一无所获。有没有另一种方法来编写这个选择以使用命名空间?

最佳答案

显然两者之间有很大的区别

Imports <xmlns="http://schema.infor.com/InforOAGIS/2">

并使用 XNamespace
Dim ns As XNamespace = "http://schema.infor.com/InforOAGIS/2"

所以,我最终做的是定义几个命名的全局命名空间,并在我需要它们时按名称使用它们:
Imports <xmlns:ns="http://schema.infor.com/InforOAGIS/2">
Imports <xmlns:nw="http://some.other.schema/blah">

Dim doc As XDocument = XDocument.Load("my.xml")
Dim IDElemCollect As IEnumerable(Of XElement) = _
From IdEl In doc ...<ns:ItemID>.<ns:ID> _
Select IdEl

命名的全局命名空间可以表示为 Select 语句中所示。

关于xml - 在 XML Linq Select 语句中使用 XNamespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28992407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com