我怎么能写一个命名空间和前缀的XElement XML?我怎么能写一个命名空间和前缀的XElemen

2019-05-12 06:21发布

这可能是一个初学者XML的问题,但我怎么能生成一个XML文档,看起来像下面这样?

<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>

如果我能得到这个写,我能得到我的问题的其他工作。

理想情况下,我想使用LINQ到XML(的XElement,的XNamespace等),C#,但如果能够实现更容易/与XmlDocuments和XmlElements更好,我会与去。

谢谢!!!

Answer 1:

下面是创建您需要的输出的一个小例子:

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        XNamespace ci = "http://somewhere.com";
        XNamespace ca = "http://somewhereelse.com";

        XElement element = new XElement("root",
            new XAttribute(XNamespace.Xmlns + "ci", ci),
            new XAttribute(XNamespace.Xmlns + "ca", ca),
                new XElement(ci + "field1", "test"),
                new XElement(ca + "field2", "another test"));
    }
}


Answer 2:

试试这个代码:

string prefix = element.GetPrefixOfNamespace(element.Name.NamespaceName);
string name = String.Format(prefix == null ? "{1}" : "{0}:{1}", prefix, element.Name.LocalName);`


Answer 3:

我希望你能得到这个线程一些有用的信息- 对属性的XElement默认命名空间提供了意想不到的行为

编辑:

另一个常见问题解答- http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/c0648840-e389-49be-a3d2-4d5db17b8ddd



Answer 4:

XNamespace ci = "http://somewhere.com";
XNamespace ca = "http://somewhereelse.com";
XElement root = new XElement(aw + "root",
    new XAttribute(XNamespace.Xmlns + "ci", "http://somewhere.com"),
    new XAttribute(XNamespace.Xmlns + "ca", "http://somewhereelse.com"),
    new XElement(ci + "field1", "test"),
    new XElement(ca + "field2", "another test")
);
Console.WriteLine(root);

这应该输出

<root xmlns:ci="http://somewhere.com" xmlns:ca="http://somewhereelse.com">
    <ci:field1>test</ci:field1>
    <ca:field2>another test</ca:field2>
</root>


Answer 5:

对于XmlDocument的是类似的:

XmlAttribute attribute1 = sessionXml.CreateAttribute("s", "Attribute1", namespaceURI);
XmlAttribute attribute2 = sessionXml.CreateAttribute("s", "Attribute2", namespaceURI);
XmlAttribute attribute3 = sessionXml.CreateAttribute("s", "Attribute3", namespaceURI);
XmlAttribute attribute4 = sessionXml.CreateAttribute("s", "Attribute4", namespaceURI);


文章来源: How can I write xml with a namespace and prefix with XElement?