如何使用命名空间和xsi和xsi:schemalocation将新元素附加到现有XML文件?

时间:2013-05-22 15:34:40

标签: c# xml

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

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

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

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

我正在使用linq到xml。

感谢。

1 个答案:

答案 0 :(得分: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命名空间。 / p>

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

我有一篇关于此的帖子:XmlSerializer: remove unnecessary xsi and xsd namespaces。 HTH。