0

我知道如何创建一个新的 XML 文件、设置声明、名称空间并将新元素添加到根。但是,如果我想将元素附加到现有文件,则会将 xmlns 添加为新元素的属性:

<NewElement p3:id="1" idAux="A1" xmlns:p3="http://xyz.com/2006/bbb" xmlns="">

我尝试使用加载的文档的命名空间,但这不起作用。

如何将新元素添加到现有文件并尊重现有元素的格式?

我正在使用 linq to xml。

谢谢。

4

1 回答 1

1

试试下面的代码:

// 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会自动添加xsixsd命​​名空间。

我知道在旧的 Xml API 中,指定默认命名空间的正确方法是将XmlNamespaceManager-type 属性添加到您的类(这是一个XmlQualifiedName对象数组的容器)并添加一个XmlQualifiedName对象,如下所示new XmlQualifiedName(string.Empty, "urn:your-namespace-name"):您可能需要使用 XML-to-LINQ 为您的文档做类似的事情。

我有一个关于这个的帖子:XmlSerializer: remove 不必要的 xsi 和 xsd 命名空间。HTH。

于 2013-05-22T19:32:25.657 回答