将 xml 命名空间添加到 XDocument
Posted
技术标签:
【中文标题】将 xml 命名空间添加到 XDocument【英文标题】:Add xml namespace to XDocument 【发布时间】:2013-10-20 12:19:50 【问题描述】:我需要的输出是
<ns1:collection>
<ns1:child1>value1</ns1:child3>
<ns1:child2>value2</ns1:child3>
<ns1:child3>value3</ns1:child3>
</ns1:collection>
我尝试通过下面的代码来做 - 但我得到一个异常 -...
如何在这个上添加命名空间??
XDocument xDoc = new XDocument( new XElement( "collection",
new XElement( "ns1:child1", value1 ),
new XElement( "ns1:child2", value2 ),
new XElement( "ns1:child3", value3 ) ) );
我也尝试使用
XNamespace ns1 = "http://url/for/ns1";";
要做的事
( ns1 + "child1", value1 )
还是什么都没有
【问题讨论】:
使用 (ns1 + "child1", value1) 后得到的输出/错误是什么? 这里没有例外——只是错误的 xml 输出 这可能会对您有所帮助。 ***.com/questions/1338517/… 【参考方案1】:将命名空间声明移动到虚构的父元素:
XDocument xDoc = new XDocument(new XElement("root",
new XAttribute(XNamespace.Xmlns + "ns1", ns1),
new XElement(ns1 + "collection",
new XElement(ns1 + "child1", value1),
new XElement(ns1 + "child2", value2),
new XElement(ns1 + "child3", value3))));
【讨论】:
【参考方案2】: XDocument xDoc = new XDocument(new XElement(ns1+"collection",
new XAttribute(XNamespace.Xmlns+"ns1",ns1),
new XElement(ns1+ "child1", value1),
new XElement(ns1+"child2", value2),
new XElement(ns1+"child3", value3)));
【讨论】:
但是在此我将拥有带有命名空间的集合 - 我需要明确情况下的“集合”=> 这不好:(以上是关于将 xml 命名空间添加到 XDocument的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法将默认命名空间设置为从 XDocument 查询?