XML文件操作的两个方法
2010-10-13 15:05
330 查看
1. XmlNode.Clone()/CloneNode()--创建此节点的一个副本,等效于调用 CloneNode(true)/当在派生类中被重写时,创建该节点的副本。
public virtual XmlNode Clone ()/public abstract XmlNode CloneNode (bool deep)
对于CloneNode中的deep参数,如果为 true,则递归地克隆指定节点下的子树;如果为 false,则只克隆该节点本身。
XmlNodeType
CloneNode(true)
CloneNode(false)
属性
克隆属性节点(包括子节点)。
克隆属性节点(包括子节点)。
CData
克隆 CData 节点(包括它的数据内容)。
克隆 CData 节点(包括它的数据内容)。
Comment
克隆注释节点(包括它的文本内容)。
克隆注释节点(包括它的文本内容)。
Document
克隆文档节点(包括任何子节点)。
克隆文档节点。
DocumentFragment
克隆文档片段节点(包括任何子节点)。
克隆文档片段节点。
DocumentType
克隆文档类型节点。
克隆文档类型节点。
Element
克隆元素节点、其属性和任何子节点。
克隆元素节点及其属性(包括任何默认属性)。
Entity
无法克隆 Entity 节点。
无法克隆 Entity 节点。
EntityReference
克隆实体引用节点。不包括替换文本。
克隆实体引用节点。不包括替换文本。
Notation
表示法节点无法克隆。
表示法节点无法克隆。
ProcessingInstruction
克隆处理指令节点(包括它的目标和数据)。
克隆处理指令节点(包括它的目标和数据)。
SignificantWhitespace
克隆重要的空白节点(包括它的数据值)。
克隆重要的空白节点(包括它的数据值)。
Text
克隆文本节点(包括它的数据值)。
克隆文本节点(包括它的数据值)。
Whitespace
克隆空白节点(包括它的数据值)。
克隆空白节点(包括它的数据值)。
XmlDeclaration
克隆 XmlDeclaration 节点(包括它的数据值)。
克隆 XmlDeclaration 节点(包括它的数据值)。
所有其他节点类型。
这些节点类型无法克隆。
这些节点类型无法克隆。
2. XmlNode.ImportNode()方法--将节点从另一个文档导入到当前文档。
public virtual XmlNode ImportNode (XmlNode node,bool deep)--node是正在被导入的节点,deep表示如果执行深层克隆,则为 true;否则为 false。
3. 这两个方法的结合应用:
现在我有三个xml文件,1.xml,2.xml,3.xml, 其中2.xml文件的根节点有三个子节点<Node>包含属性和子节点,1.xml中的根节点只有一个子节点<Node>与2.xml文件根节点的三个子节点中的一个完全相同,现在要把2.xml根节点剩下的那两个1.xml中没有的子<node>节点(全部)添加到3.xml根节点下。
一开始这么写的:
XmlDocument xd1 = new XmlDocument();
XmlDocument xd2 = new XmlDocument();
XmlDocument xd3 = new XmlDocument();
xd1.Load("1.xml");
xd2.Load("2.xml");
xd3.Load("3.xml");
XmlNode root1 = xd1.DocumentElement;
XmlNode root2 = xd2.DocumentElement;
XmlNode root3 = xd3.DocumentElement;
XmlNodeList list1 = root1.SelectNodes("Node");
XmlNodeList list2 = root2.SelectNodes("Node");
for (int i = 1; < list2.Count; i++)
{
XmlNode HGN=list2.CloneNode(true);
root3.AppendChild(HGN);
}
这时候弹出一System.ArgumentException异常,具体信息:要插入的节点是来自不同的文件内容。
修改如下:
for (int i = 1; < list2.Count; i++)
{
XmlNode HGN=xd3.ImportNode(list2.CloneNode(true), true);
root3.AppendChild(HGN);
}
这样就成功的往3.xml中添加了2中多的那两个node节点,包含属性和子节点。
public virtual XmlNode Clone ()/public abstract XmlNode CloneNode (bool deep)
对于CloneNode中的deep参数,如果为 true,则递归地克隆指定节点下的子树;如果为 false,则只克隆该节点本身。
XmlNodeType
CloneNode(true)
CloneNode(false)
属性
克隆属性节点(包括子节点)。
克隆属性节点(包括子节点)。
CData
克隆 CData 节点(包括它的数据内容)。
克隆 CData 节点(包括它的数据内容)。
Comment
克隆注释节点(包括它的文本内容)。
克隆注释节点(包括它的文本内容)。
Document
克隆文档节点(包括任何子节点)。
克隆文档节点。
DocumentFragment
克隆文档片段节点(包括任何子节点)。
克隆文档片段节点。
DocumentType
克隆文档类型节点。
克隆文档类型节点。
Element
克隆元素节点、其属性和任何子节点。
克隆元素节点及其属性(包括任何默认属性)。
Entity
无法克隆 Entity 节点。
无法克隆 Entity 节点。
EntityReference
克隆实体引用节点。不包括替换文本。
克隆实体引用节点。不包括替换文本。
Notation
表示法节点无法克隆。
表示法节点无法克隆。
ProcessingInstruction
克隆处理指令节点(包括它的目标和数据)。
克隆处理指令节点(包括它的目标和数据)。
SignificantWhitespace
克隆重要的空白节点(包括它的数据值)。
克隆重要的空白节点(包括它的数据值)。
Text
克隆文本节点(包括它的数据值)。
克隆文本节点(包括它的数据值)。
Whitespace
克隆空白节点(包括它的数据值)。
克隆空白节点(包括它的数据值)。
XmlDeclaration
克隆 XmlDeclaration 节点(包括它的数据值)。
克隆 XmlDeclaration 节点(包括它的数据值)。
所有其他节点类型。
这些节点类型无法克隆。
这些节点类型无法克隆。
2. XmlNode.ImportNode()方法--将节点从另一个文档导入到当前文档。
public virtual XmlNode ImportNode (XmlNode node,bool deep)--node是正在被导入的节点,deep表示如果执行深层克隆,则为 true;否则为 false。
3. 这两个方法的结合应用:
现在我有三个xml文件,1.xml,2.xml,3.xml, 其中2.xml文件的根节点有三个子节点<Node>包含属性和子节点,1.xml中的根节点只有一个子节点<Node>与2.xml文件根节点的三个子节点中的一个完全相同,现在要把2.xml根节点剩下的那两个1.xml中没有的子<node>节点(全部)添加到3.xml根节点下。
一开始这么写的:
XmlDocument xd1 = new XmlDocument();
XmlDocument xd2 = new XmlDocument();
XmlDocument xd3 = new XmlDocument();
xd1.Load("1.xml");
xd2.Load("2.xml");
xd3.Load("3.xml");
XmlNode root1 = xd1.DocumentElement;
XmlNode root2 = xd2.DocumentElement;
XmlNode root3 = xd3.DocumentElement;
XmlNodeList list1 = root1.SelectNodes("Node");
XmlNodeList list2 = root2.SelectNodes("Node");
for (int i = 1; < list2.Count; i++)
{
XmlNode HGN=list2.CloneNode(true);
root3.AppendChild(HGN);
}
这时候弹出一System.ArgumentException异常,具体信息:要插入的节点是来自不同的文件内容。
修改如下:
for (int i = 1; < list2.Count; i++)
{
XmlNode HGN=xd3.ImportNode(list2.CloneNode(true), true);
root3.AppendChild(HGN);
}
这样就成功的往3.xml中添加了2中多的那两个node节点,包含属性和子节点。
相关文章推荐
- DataSet 操作 XML 文件的方法
- 简单的VC 操作XML 文件的的方法
- JavaScript操作XML文件之XML读取方法
- 简单的VC 操作XML 文件的的方法
- 读写文件的几种方法std::fstream、fopen操作;解析XML方法:pugi、QDomDocument
- 简单的VC 操作XML 文件的的方法
- [winform]操作文件与xml常用方法
- JavaScript操作XML文件之XML读取方法
- xml文件操作小结(3)---selectsinglenode方法中的xpath%%%%转自酷网动力(www.ASPCOOL.COM)。
- delphi 生成xml 方法 与 delphi txt文件操作
- Xml文件操作的其中一个使用方法:
- delphi 生成xml 方法 与 delphi txt文件操作
- Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法
- xml文件操作技巧---selectsinglenode方法中的xpath%%%%
- 简单的VC 操作XML 文件的的方法
- 简单的VC 操作XML 文件的的方法
- 简单的VC 操作XML 文件的的方法
- C#使用Linq操作Xml文件(创建xml文件、增删改查xml文件节点信息)的方法
- xml文件操作小结(3)---selectsinglenode方法中的xpath%%%%转自酷网动力(www.ASPCOOL.COM)。
- C#操作xml配置文件最简单方法