操作XML文档的问题

cyp503 2009-01-14 02:40:26
有xml文档

<root>
<nodes>
<node><nodecode>1</nodecode></node>
<node><nodecode>2</nodecode></node>
<node><nodecode>3</nodecode></node>
<node><nodecode>4</nodecode></node>
</nodes>

</root>

我想操作XML文档,在
<node><nodecode>2</nodecode></node>
<node><nodecode>3</nodecode></node>添加父节点nodes
也就是变成:
<root>
<nodes>
<node><nodecode>1</nodecode></node>
<nodes>
<node><nodecode>2</nodecode></node>
<node><nodecode>3</nodecode></node>
</nodes>

<node><nodecode>4</nodecode></node>
</nodes>

</root>

请问c#代码怎样写?
...全文
122 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MAOGE1987 2009-01-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 greatverve 的回复:]
在此 <node> <nodecode>2 </nodecode> </node>
insertAfter一个 <nodecode>1 </nodecode>
再把那两个添加到子结点,再删除。
xml不通,主要是几乎不用。
参考:
http://blog.csdn.net/greatverve/archive/2008/12/10/3490741.aspx
这里能简化常用操作。
[/Quote]
这个可以。UP
Fibona 2009-01-14
  • 打赏
  • 举报
回复
string xml = @"<root> 
<nodes>
<node> <nodecode>1</nodecode> </node>
<node> <nodecode>2</nodecode> </node>
<node> <nodecode>3</nodecode> </node>
<node> <nodecode>4</nodecode> </node>
</nodes>

</root>
";
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(xml);



XmlNode node2 = doc.SelectSingleNode(@"/root/nodes/node[nodecode='2']");
XmlNode node3 = doc.SelectSingleNode(@"/root/nodes/node[nodecode='3']");

XmlNode parent = node2.ParentNode;
if (parent != null)
{
XmlNode newP = doc.CreateElement("nodes");
newP.AppendChild(node2);
newP.AppendChild(node3);
parent.InsertAfter(newP,parent.FirstChild);
}

xml = doc.InnerXml.ToString();
greatverve 2009-01-14
  • 打赏
  • 举报
回复
在此<node> <nodecode>2 </nodecode> </node>
insertAfter一个<nodecode>1 </nodecode>
再把那两个添加到子结点,再删除。
xml不通,主要是几乎不用。
参考:
http://blog.csdn.net/greatverve/archive/2008/12/10/3490741.aspx
这里能简化常用操作。
cyp503 2009-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 scjtswj 的回复:]
C# code

XmlDocument doc = new XmlDocument();
string str = "<root><nodes>";
str += "<node><nodecode>1</nodecode></node>";
str += "<node><nodecode>2</nodecode></node>";
str += "<node><nodecode>3</nodecode></node>";
str += "<node><nodecode>4</nodecode></node>";
str += "</nodes></root>";

doc.LoadXml(str);

XmlElement root = do…
[/Quote]

立即试一试!
sunhongliang100 2009-01-14
  • 打赏
  • 举报
回复
不太懂,up!
scjtswj 2009-01-14
  • 打赏
  • 举报
回复

XmlDocument doc = new XmlDocument();
string str = "<root><nodes>";
str += "<node><nodecode>1</nodecode></node>";
str += "<node><nodecode>2</nodecode></node>";
str += "<node><nodecode>3</nodecode></node>";
str += "<node><nodecode>4</nodecode></node>";
str += "</nodes></root>";

doc.LoadXml(str);

XmlElement root = doc.DocumentElement;

XmlNode node2 = root.SelectSingleNode("descendant::node[nodecode='2']");
XmlNode node3 = root.SelectSingleNode("descendant::node[nodecode='3']");

XmlNode nodes = root.FirstChild.CloneNode(false);
XmlNode newNode = root.FirstChild.InsertAfter(nodes, root.FirstChild.FirstChild);

newNode.AppendChild(node2);
newNode.AppendChild(node3);

cyp503 2009-01-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuanshen712 的回复:]
这样的结构不会出问题吗?
[/Quote]

只是一个例程。
zhuanshen712 2009-01-14
  • 打赏
  • 举报
回复
这样的结构不会出问题吗?
cwmwss 2009-01-14
  • 打赏
  • 举报
回复
不会。学习下

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧