设置根命名空间前缀在一个XDocument

问题描述:

我目前有:
设置根命名空间前缀在一个XDocument

XNamespace xmlns = "XSDName";<br> 
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance";<br> 
XNamespace schemaloc = @"XSDName XSDName.xsd"; 
XDocument xdoc = new XDocument(
    new XElement("BaseReport", 
    new XAttribute(xsi + "schemaLocation", schemaloc), 
    new XAttribute(XNamespace.Xmlns+"ns1", xmlns), 
    new XAttribute(XNamespace.Xmlns + "xsi", xsi)); 

这给了我:

BaseReport xsi:schemaLocation="XSDName XSDName .xsd" xmlns:ns1="XSDName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

我怎么能有BaseReport阅读ns1:BaseReport

+0

您可以将变量'xsi','schemaloc'和'xmlns'的赋值添加到您的代码示例中吗? – 2013-02-20 18:22:21

+0

在那里,它已更新。 – user2073374 2013-02-20 19:19:37

+0

在做了额外的研究之后,我不相信你可以在根元素中使用名称空间。名称空间被定义为根元素的属性,并且对于根本身而言将是未定义的。你可以阅读更多[这里](http://*.com/q/4985974/299327)。 – 2013-02-20 19:38:21

下面的代码会给你你想要的输出。关键是在名称前面添加已定义的名称空间,并让.NET找出正确的前缀。

XNamespace xmlns = "XSDName"; 
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance"; 
XNamespace schemaloc = @"XSDName XSDName.xsd"; 
XDocument xdoc = new XDocument(
    new XElement(xmlns + "BaseReport", 
    new XAttribute(xsi + "schemaLocation", schemaloc), 
    new XAttribute(XNamespace.Xmlns + "ns1", xmlns), 
    new XAttribute(XNamespace.Xmlns + "xsi", xsi))); 
+0

啊,是的,我从前面发送的链接中得到了这个信息+/-正在进行一些调整。 [页面没有刷新,derp。]非常感谢! – user2073374 2013-02-21 15:11:39

+0

@ user2073374没问题,我很高兴能帮上忙。 – 2013-02-21 15:16:02