使用XmlElement创建带前缀的xmlns

时间:2014-11-20 09:09:54

标签: c# xml dom

我想创建一个具有以下结构的dom

<CreateImport xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <XmlData>
  ...other child nodes
  </XmlData>
</CreateImport>

我知道如何使用普通的命名空间创建XmlElement,如

<CreateImport xmlns="http://www.w3.org/2001/XMLSchema-instance">

但现在我的xmlns前缀为i,我想以编程方式将其添加到XmlDocument。 我对XElement vs XmlElement感到困惑。前者不能有XmlElement类型的孩子。

1 个答案:

答案 0 :(得分:1)

Linq To XML中使用了

XDocumentXElement等。但是在我看来,它们也可以像XmlDocument一样用于创建XML文档。在你的情况下,你可以这样写:

XElement root = new XElement("CreateImport", new XAttribute(XNamespace.Xmlns + "i", "http://www.w3.org/2001/XMLSchema-instance"),
                             new XElement("XmlData", 
                                          new XElement("Child1"), 
                                          new XElement("Child2")));

您可以使用root.Save("myxml.xml")将其保存到文件中。这将创建以下XML:

<?xml version="1.0" encoding="utf-8"?>
<CreateImport xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
   Content
</CreateImport>

您可以阅读http://msdn.microsoft.com/en-US/library/bb387098.aspx了解更多详情和示例。