设置根命名空间前缀在一个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
?
答
下面的代码会给你你想要的输出。关键是在名称前面添加已定义的名称空间,并让.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
您可以将变量'xsi','schemaloc'和'xmlns'的赋值添加到您的代码示例中吗? – 2013-02-20 18:22:21
在那里,它已更新。 – user2073374 2013-02-20 19:19:37
在做了额外的研究之后,我不相信你可以在根元素中使用名称空间。名称空间被定义为根元素的属性,并且对于根本身而言将是未定义的。你可以阅读更多[这里](http://*.com/q/4985974/299327)。 – 2013-02-20 19:38:21