我正在使用 VB 2008,并且正在尝试将 xmlns="mynamespace" 属性添加到 XDocument 的根元素。
XML 文档由第 3 方创建,我已将其加载到 VB XDocument 对象中。就它而言,它没有命名空间。我一直在处理本地副本,并在文本编辑器中添加了命名空间,这样我就可以按照MSDN的 Beth Massi vids 中的说明使用 VB 中的 XMLToSchema 来启用智能感知等。现在其余的代码工作我想再次打开实时文档。如果没有命名空间,我的 XML 文字将无法解析。
我尝试使用几种方法将 XMLNS 属性添加到根标记中,但未成功,我得到的最接近的是以下三个代码示例。
Dim myNS As XNamespace = "urn:nbf:namespacename"
myXML.Element("nameofrootelement").Add(myNS)
^^^^ 命名空间是作为根元素的值添加的,而不是作为属性。
XML.Root.Add(New XAttribute("xmlns", "name"))
^^^^ 生成错误:抛出运行时异常:System.Xml.XmlException - 前缀 '' 不能在同一起始元素标记内从 '' 重新定义为 'name'。
但
XML.Root.Add(New XAttribute("test", "name"))
^^^^ 工作正常。大概它不喜欢我手动尝试设置保留属性?从我所做的一些谷歌搜索来看,这种命名空间似乎过于复杂。
我该如何解决这个问题?:D
谢谢!
更新
谢谢安东尼。
我想我需要更好地理解命名空间。
我以为。ToString
它,然后修改,然后。Parse
它也是,但我想要一个更好的解决方案,这样它可以帮助我更好地理解它!不过,我确实尝试过,正如您正确指出的那样,它也会影响所有后代,因此它仍然会中断。
我将使用由不同第三方生成的多个 XML 提要,我认为为简单起见,我将完全省略命名空间!
我自己的自定义解析函数将第三方提要重写为一个统一的文档,然后由另一个例程处理。我将能够将 ns 添加到 XML 的中间部分,这将有助于编写辅助函数。
谢谢!