该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明! 陈希章原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/05/26/1489277.html原文标题:在XML文档中替换元素名称的做法 原文发表:2009/5/25 23:59:00 |
不要小看这个操作,其实是不太容易的。请注意,我们是要替换掉元素的名称,而不是元素的值。
XML的内容在内存中是一个DOM树,要替换掉一个元素,其实是要新建一个元素,并且将原先元素的所有子元素都复制过来。在LINQ TO XML中用ReplaceWith来实现
using System;
using System.Linq;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
XDocument doc = new XDocument(
new XElement("Tables"
, new XElement("Table"
, new XElement("Name", "Orders")
, new XElement("Owner", "chenxizhang"))
, new XElement("Table"
, new XElement("Name", "Customers")
, new XElement("Owner", "Allen"))
));
Console.WriteLine("原始的XML内容:");
Console.WriteLine(doc);
//改变Tables元素名称为Items
Console.WriteLine("改变了根元素之后显示的效果:");
XElement root = doc.Element("Tables");
root.ReplaceWith(new XElement("Items", root.Elements("Table")));
Console.WriteLine(doc);
//改变Table元素名称为Item
Console.WriteLine("改变了子元素之后显示的效果:");
foreach (var item in doc.Elements("Items").Descendants().ToList())//这里一定要先ToList
{
item.ReplaceWith(new XElement("Item", item.Descendants()));
}
Console.WriteLine(doc);
Console.Read();
}
}
}
作者:陈希章 出处:http://blog.youkuaiyun.com/chen_xizhang 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |