如何将xmlnamespace添加到xmldocument

时间:2010-05-27 10:07:31

标签: c# xml xmldocument

我试图创建一个xml应该看起来像这样

<?xml version="1.0" encoding="iso-8859-1"?>
<MyTestSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Tests>
    <Test>
      <messaure>1</messaure>
      <height>4</height>
    </Test>
    <Test>
      <messaure>4</messaure>
      <height>53</height>
    </Test>
  </Tests>
</MyTestSet>

创建测试或测试元素不是问题,但创建包含命名空间的“MyTestSet”的最佳方法是什么? 我正在使用c#XMLDocument

3 个答案:

答案 0 :(得分:26)

这对我有用:

XmlDocument.DocumentElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlDocument.DocumentElement.SetAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");

如果要创建已发布的整个文档,可能不想忘记XML声明:

        XmlDeclaration xml_declaration;
        xml_declaration = XmlDocument.CreateXmlDeclaration("1.0", "ISO-8859-1", "yes");

        XmlElement document_element = XmlDocument.DocumentElement;
        XmlDocument.InsertBefore(xml_declaration, document_element);

在某些情况下,您可能需要它。

答案 1 :(得分:2)

此问题还显示了另一种方法: Creating a specific XML document using namespaces in C#

您也可以使用XmlNamespaceManager类

http://msdn.microsoft.com/en-us/library/d6730bwt%28VS.80%29.aspx

最后总是有Linq,你可以使用XDocument和XNamespace

http://msdn.microsoft.com/en-us/library/bb387075.aspx

答案 2 :(得分:0)

XmlDocument xmlDocSPack = new XmlDocument();
XmlNode xmldocNode = xmlDocSPack.CreateXmlDeclaration("1.0", "", null);
xmlDocSPack.AppendChild(xmldocNode);

XmlElement LiftsMainNode = xmlDocSPack.CreateElement("Lifts");
LiftsMainNode.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");

xmlDocSPack.AppendChild(LiftsMainNode);
xmlDocSPack.Save("SPack"+DateTime.Now.Year + ".xml");

输出:

<?xml version="1.0"?>
<Lifts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />