C#XML创建与节点对象引用
2013-10-24 10:55
330 查看
我们在创建xml过程中会遇到不同的级别有相同节点的情况。如下面的xml:
<?xml version="1.0" encoding="GBK">
<goods>
<price>$3/kg</price>
<sub>
<weight>88kg</weight>
<price>$3/kg</price>
</sub>
</goods>
标记为绿色的两个节点处于不同的级别,但是都引用了相同的XmlNode对象,于是我们写出如下代码:
在代码中我们创建了同一个对象price,然后再不同的地方,利用AppendChild去引用,但是结果你会发现结果是:
<goods>
<sub>
<weight>88kg</weight>
<price>$3/kg</price>
</sub>
</goods>
我的理解是,xml文档在创建过程时在内存中采用树状结构来构建,所以在调用过程中会导致前面调用该对象的链接失效。
解决方法: 重新复制一个对象。XmlNode price1 = price.Clone();
<?xml version="1.0" encoding="GBK">
<goods>
<price>$3/kg</price>
<sub>
<weight>88kg</weight>
<price>$3/kg</price>
</sub>
</goods>
标记为绿色的两个节点处于不同的级别,但是都引用了相同的XmlNode对象,于是我们写出如下代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; namespace XMLTest { class Program { static void Main(string[] args) { XmlDocument myXML = new XmlDocument(); XmlDeclaration myDeclaration = myXML.CreateXmlDeclaration("1.0", "GBK", null); myXML.AppendChild(myDeclaration); XmlNode goods = myXML.CreateNode(XmlNodeType.Element,"goods",null); myXML.AppendChild(goods); XmlNode price = myXML.CreateNode(XmlNodeType.Element, "price", null); price.InnerText = "$3/kg"; goods.AppendChild(price); XmlNode sub = myXML.CreateNode(XmlNodeType.Element, "sub", null); goods.AppendChild(sub); XmlNode weight = myXML.CreateNode(XmlNodeType.Element, "weight", null); weight.InnerText = "88kg"; sub.AppendChild(weight); sub.AppendChild(price); Console.WriteLine(myXML.InnerXml); Console.ReadKey(); } } }
在代码中我们创建了同一个对象price,然后再不同的地方,利用AppendChild去引用,但是结果你会发现结果是:
<goods>
<sub>
<weight>88kg</weight>
<price>$3/kg</price>
</sub>
</goods>
我的理解是,xml文档在创建过程时在内存中采用树状结构来构建,所以在调用过程中会导致前面调用该对象的链接失效。
解决方法: 重新复制一个对象。XmlNode price1 = price.Clone();
相关文章推荐
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点,C#对象与xml文件的相互转换等等。)
- c# 中引用对象如何创建副本
- C#特性与反射:从XML文件创建对象
- 用C#根据内容创建xml元素节点名不乎时规则时的一种很2的写法。
- C# winform 创建 xml节点
- c# XML读取创建修改节点,子节点,和值
- 用C#创建XML节点
- C#读取xml 文件 报错:未将对象引用设置到对象的实例
- C#中用XmlDocument对象获取XML文件中的节点值
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C#中如何创建xml文件 增、删、改、查 xml节点信息
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C#-XML文件提取字符串+字符串存为XML文件+创建XML(自定义节点)文件+读取节点内容
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)