命名空间,冒号为C#中xml文件的属性

时间:2015-04-17 06:45:02

标签: c# xml

我想生成一个xml代码,如下例所示: -

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns ="abc.xyz.xsd" xmlns:xsi="http://namespace">
</Root>

我的C#代码如下:

XNamespace xsi = "http://namespace";
XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XElement("Root",
    new XAttribute("xmlns", "abc.xyz.xsd"),
    new XAttribute(XNamespace.Xmlns + "xsi", xsi)
);

此代码在保存时出错。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您应该使用命名空间(命名空间+&#34; Root&#34;)添加Root元素,因为您正在使用命名空间。

像这样:

XNamespace xsi = "http://namespace";
XNamespace ns = "abc.xyz.xsd";

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XElement(ns + "Root",
        new XAttribute("xmlns", ns),
        new XAttribute(XNamespace.Xmlns + "xsi", xsi)));

有关创建具有命名空间的文档,请参阅MSDN article

答案 1 :(得分:2)

您可以使用单个命名空间

        XNamespace xsi = "http://namespace";
        XDocument doc1 = new XDocument(
             new XDeclaration("1.0", "utf-8", null),
             new XElement(xsi + "Root",
            new XAttribute("xmlns", "abc.xyz.xsd"),
            new XAttribute(XNamespace.Xmlns + "xsi", "http://namespace"),
            new XElement(xsi + "Child",
                new XElement(xsi + "DifferentChild", "other content")
            )
        ));

请参阅此参考资料https://msdn.microsoft.com/en-us/library/bb387075.aspx

输出将如下所示

<?xml version="1.0" encoding="utf-8"?>
<xsi:Root xmlns="abc.xyz.xsd" xmlns:xsi="http://namespace">
  <xsi:Child>
    <xsi:DifferentChild>other content</xsi:DifferentChild>
  </xsi:Child>
</xsi:Root>