zoukankan      html  css  js  c++  java
  • 合并 XML 文件

    问题:
    有如下的两个 XML 文件,将其合并为一个 XML 文档,并输出。
    第一个 XML 文档
    <?xml version="1.0" encoding="utf-8"?>
    <root>
    <a>A</a>
    <b>B</b>
    </root>
     第二个 XML 文档
    <?xml version="1.0" encoding="utf-8"?>
    <root>
    <b>B</b>
    </root>
    要点:
    对于 XML 文档中的节点,除了通常的 ParentNode, PreviousSibling, NextSibling , FirstChild, LastChild属性等之外,还有一个重要的属性 OwnerDocument, 表示节点所属的文档对象,这是一个只读的属性,不能直接赋值。
    要改变节点所属的文档,可以使用目标文档对象的 ImportNode 来改变节点所属的文档,这个方法的定义如下:
    public virtual XmlNode ImportNode(
    	XmlNode node,
    	bool deep
    )
    
    deep 表示 是否将节点的子节点也导入到当前文档。
    代码:
    using System;
    using System.Xml;
    
    namespace XmlAppand
    {
        class Program
        {
            static void Main(string[] args)
            {
                XmlDocument doca = new XmlDocument();
                doca.Load("A.xml");
    
                XmlDocument docb = new XmlDocument();
                docb.Load("B.xml");
                
                // 分别获取两个文档的根元素,以便于合并
                XmlElement rootA = doca.DocumentElement;
                XmlElement rootB = docb.DocumentElement;
    
                // 创建一个合并的 document
                XmlDocument result = new XmlDocument();
                // 创建根元素
                XmlElement root = result.CreateElement("root");
                result.AppendChild(root);
    
                foreach (XmlNode node in rootA.ChildNodes)
                {
                    // 先导入节点
                    XmlNode n = result.ImportNode(node, true);
                    // 然后,插入指定的位置
                    root.AppendChild(n);
                }
    
                // 同上
                foreach (XmlNode node in rootB.ChildNodes)
                {
                    XmlNode n = result.ImportNode(node, true);
                    root.AppendChild(n);
                }
    
                result.Save(Console.Out);
            }
        }
    }
    
     
  • 相关阅读:
    HashMap和Hashtable的区别
    java倒计时三种简单实现方式
    AngularJS---基本操作
    AngularJS---认识AngularJS
    Java线程面试题
    JAVA中高访问量高并发的问题怎么解决?
    Java高并发,如何解决,什么方式解决
    Map总结
    Github
    反射
  • 原文地址:https://www.cnblogs.com/haogj/p/2013824.html
Copyright © 2011-2022 走看看