C#XML创建与节点对象引用
我们在创建xml过程中会遇到不同的级别有相同节点的情况。如下面的xml:
<?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();
C#XML创建与节点对象引用的更多相关文章
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
以下是代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...
- XML通过XSL格式化的那点事(XML到自定义节点折叠显示)
引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...
- c#xml追加读取节点
读取 if (File.Exists("Book.xml")) { XmlDocument doc = new XmlDocument(); doc.Load("Book ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- 使用LINQ TO XML 创建xml文档,以及读取xml文档把内容显示到GridView例子
首先,准备了一个Model类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- TXMLDocument 创建空值节点不要缩写
TXMLDocument 创建空值节点不要缩写 xmldoc.CreateNode('input'); 然后访问 xmldoc.DocumentElement.XML <input/> 节 ...
- C#基础巩固(2)-Linq To XML创建XML
一.首先要清楚一个正确的XML基本格式是怎样的. 1.后缀名.xml结尾 2.有一行描述 3.有且仅有一个根节点. 如图: 一个正确的xml文件能够被浏览器打开且显示.所以判断一个xml文件有没有错误 ...
- Dom4j向XML中增加节点与属性——(四)
先获取到节点,然后在节点山添加Element 添加节点 添加属性 设置开始标签与结束标签的值book.addElement("描述").addAttribute("nam ...
- C# XML创建解析、XML格式化
导入命名空间: VS需要在项目中添加引用system.XML; 代码中添加 using System.XML和using System.IO; XML范例: <?xml version=&quo ...
随机推荐
- Java获取泛型的Class对象
工作中瞄到的,在此收集了 public class RawDao<T> { protected Class<T> clazz; @SuppressWarnings(" ...
- index of rmvb mp3 rm突破站点入口下载
首先打开Google,在关键词输入框中输入"index of/"inurl:lib(双引號为英文状态下) ,选择“搜索中文简体网页”选项,回车搜索,得到了一些网页,不要以为这是一些 ...
- gulp自己主动化任务脚本在HybridApp开发中的使用
眼下做前端开发的同学可能都熟悉grunt.fis之类的自己主动化构建工具.事实上在HybridApp开发中我们也能够使用这些工具来简化我们的工作.gulp就是一个比grunt,fis都先进的构建工具. ...
- tar命令的详解
tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与文件夹 ....參数:-c :建立一个压缩文件的參数指令(create 的意思):-x :解开一个压缩文件的參数指 ...
- 三期_day12_其它+jetty的使用
1.大致总结 行程管理和留言反馈和前面的思路差点儿相同,这里就不多啰嗦了.经过十几天的写写停停.有了一个初步的进展了,再往下写也没有啥欲望了.还是研究下android和server,设计模式和网络这些 ...
- .Net程序猿玩转Android开发---(8)表格布局TableLayout
表格布局TableLayout是Android中比較经常使用的一个布局控件,既然是表格,肯定有行和列,TableLayout中的行有TableRow组成.列依据每行控件的数量来确定 假如第一行有3个控 ...
- java13 InputStream,Reader
流的方向: .输入流:数据源到程序(InputStream,Reader读进来). .输出流:程序到目的地(OutPutStream,Writer写出来). 处理数据单元: 字节流:按照字节读取数据( ...
- redis单机及其集群的搭建
http://www.cnblogs.com/mouseIT/p/5288204.html
- MVC - HtmlHelper类
传统的Html元素不能和服务端数据进行绑定 HtmlHelper类提供了一系列的方法来生成Html元素 并可以实现与数据绑定在一起 然后生成Html Html.BeginForm(actionName ...
- POJ1329题
Circle Through Three Points Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Jav ...