如何将xmlns设置为第一个xml属性

时间:2012-08-27 02:12:30

标签: xml xml-namespaces xsi

我对如何将xmlns设置为第一个属性感到非常困惑,我使用下面的代码生成xml文件

XNamespace ns = "http://www.openarchives.org/OAI/2.0/";
XNamespace xsiNs = "http://www.w3.org/2001/XMLSchema-instance";
XDocument xDoc = new XDocument(
new XDeclaration("1.0", "UTF-8", "no"),
new XElement(ns + "gpx",
    new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
    new XAttribute(xsiNs + "schemaLocation",
        "http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"),
));

如何,结果总是

<?xml version="1.0" encoding="UTF-8"?>
<gpx 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://
www.openarchives.org/OAI/2.0/OAI-PMH.xsd"
xmlns="http://www.openarchives.org/OAI/2.0/">

我的意思是Iwwant xmlns =“http://www.openarchives.org/OAI/2.0/”。所以当我调用xElement.FirstAttribute时,它应该是xmlns而不是xmlns:xsi,任何想法?

1 个答案:

答案 0 :(得分:0)

通过将其添加为元素中的第一个属性来手动设置:

new XElement(ns + "gpx",
    new XAttribute("xmlns", ns.NamespaceName), // add it here
    new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
    new XAttribute(xsiNs + "schemaLocation",
        "http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"),
)