【问题标题】:Linq to XML, C#LINQ转XML,C#
【发布时间】:2011-07-20 20:03:48
【问题描述】:

我在XDocument 对象(LINQ to XML)中有一个 xml。我需要将命名空间添加到 Xdocument 中的每个 Xelement/node。

我不想以下面的方式添加。因为我已经在 xdoc 中有 xml。

XDocument xDoc = new XDocument(
new XElement(ns + "root",
new XElement(ns + "person",
new XAttribute("id", 1),
new XElement(ns + "firstname", "jack"),

下面是我的格式

<root>
  <person>1</person>
  <firstname>jack</firstname>
</root>

我想把它转换成下面这个格式

<emp:root>
  <emp:person>1</emp:person>
  <emp:firstname>jack</emp:firstname>
</emp:root>

【问题讨论】:

  • ns的声明在哪里?另外,你的意思是你已经在xDoc 中有XML?
  • XNamespace ns = "w3.org/2005/Atom";我将 xml 字符串加载到 xDocument 对象中。 Xdocument xDoc = 新 Xdocument(); xDoc.Parse(xml.tostring())

标签: c# xml linq


【解决方案1】:
foreach (var node in xDoc.Descendants()) 
{ 
    node.Name = ns + node.Name.LocalName; 
}

应该可以的:

注意命名空间只会出现在根节点上。

【讨论】:

  • 谢谢你.. 我正在寻找类似下面的东西。 1jack。将 emp: 添加到每个元素。
  • 这里是命名空间。 xmlns:emp="w3.org/2005/Atom"
  • @goutham:就在那里。每个节点的开头不需要“emp:”。
  • @goutham,它就在那里,只是没有出现。
猜你喜欢
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多