我知道如何创建一个新的 XML 文件、设置声明、名称空间并将新元素添加到根。但是,如果我想将元素附加到现有文件,则会将 xmlns 添加为新元素的属性:
<NewElement p3:id="1" idAux="A1" xmlns:p3="http://xyz.com/2006/bbb" xmlns="">
我尝试使用加载的文档的命名空间,但这不起作用。
如何将新元素添加到现有文件并尊重现有元素的格式?
我正在使用 linq to xml。
谢谢。
试试下面的代码:
// Assume 'el' is the new element that's created.
XElement el = new XElement("NewElement", new XAttribute("{p3}id", 1), new XAttribute("idAux", "A1"));
以上应创建以下内容:
<NewElement p3:id="1" idAux="A1">
请注意,命名空间p3
可能是在文档根元素上创建的——我不确定。我还知道,对于旧的 System.Xml API,如果您没有为文档指定默认命名空间,那么XmlSerializer
会自动添加xsi
和xsd
命名空间。
我知道在旧的 Xml API 中,指定默认命名空间的正确方法是将XmlNamespaceManager
-type 属性添加到您的类(这是一个XmlQualifiedName
对象数组的容器)并添加一个XmlQualifiedName
对象,如下所示new XmlQualifiedName(string.Empty, "urn:your-namespace-name")
:您可能需要使用 XML-to-LINQ 为您的文档做类似的事情。
我有一个关于这个的帖子:XmlSerializer: remove 不必要的 xsi 和 xsd 命名空间。HTH。