gpt4 book ai didi

.net - 在.Net中添加一个带有父节点命名空间的XmlNode

转载 作者:行者123 更新时间:2023-12-04 06:09:35 25 4
gpt4 key购买 nike

我正在使用 XmlDocument 和 XmlNode 来操作 xml 文件。假设我想向根添加一个名为“Language”的有效节点,我使用这样的代码:

Dim languageNode As XmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "Language", Nothing)
languageNode.InnerText = "en-US"
root.AppendChild(languageNode)

其中 xmlDoc 是一个 XmlDocument 对象并且已经被加载。但是,在操作后的xml文件中,它是这样的:
<Language xmlns="">en-US</Language>

而这并没有通过验证。有没有办法摆脱命名空间?谢谢!

更新:
我正在编辑一个 .rdlc 文件,它定义了一个本地报告,并使用 xml 格式。文件的一部分如下所示:
<?xml version="1.0" encoding="utf-16"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition"
xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

<Language xmlns="">en-US</Language>
...

通常不应该有这么多 namespace 在使用,但我是从 xslt 生成的。但是Language节点是在这个文件生成之后添加的。我的代码如下所示:
Dim xmlRdlc As New XmlDocument()
xmlRdlc.Load(file)
Dim root As XmlNode = xmlRdlc.DocumentElement()
Dim languageNode As XmlNode = xmlRdlc.CreateNode(XmlNodeType.Element, "Language", Nothing)
languageNode.InnerText = "en-US"
root.AppendChild(languageNode)
xmlRdlc.Save(file)

那么我应该如何添加所需的节点,如下所示:
<Language>en-US</Language>

最佳答案

您需要指定命名空间。将“http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition”作为方法的最后一个参数传递。

Dim xmlRdlc As New XmlDocument()
xmlRdlc.Load(file)
Dim root As XmlNode = xmlRdlc.DocumentElement()
Dim languageNode As XmlNode = xmlRdlc.CreateNode(XmlNodeType.Element, "Language", _
"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition")
languageNode.InnerText = "en-US"
root.AppendChild(languageNode)
xmlRdlc.Save(file)

顺便说一句,使用 LINQ to XML 会更清晰:
Dim rdlcNS As XNamespace = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition"
Dim xmlRdlc = XDocument.Load(file)
xmlRdlc.Root.Add(New XElement(rdlcNS + "Language", "en-US"))
xmlRdlc.Save(file)

(翻译成 VB.NET 近似值,你的里程可能会有所不同等)

关于.net - 在.Net中添加一个带有父节点命名空间的XmlNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929969/

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