经常有的需求是,需要将一种格式的XML转换成另一种XML。如果要实现这个功能首先需要将两个不同XML手动建立节点对照关系。然后存成XML或者数据文件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;using System.Xml;
using System.Collections;
using System.Windows;
using System.IO;
namespace XML_Dom
{public partial class Form2 : Form{private XmlDocument document;//xml文档对象private XmlNode newNode;private XmlAttribute newAttri;private XmlElement newElement;string systemPath;int ncNum = 0;public Form2(){InitializeComponent();Form_Load();}private void Form2_Load(object sender, EventArgs e){}//加载XML文件private void LoadStuXml(string xml){document = new XmlDocument();document.Load(xml);//加载xml文档}ArrayList newList = new ArrayList();private void TraverseTextNodeInnerText(XmlNode node){if (node.HasChildNodes){XmlNodeList nodeList = node.ChildNodes;foreach (XmlNode nd in nodeList){//if (nd.NodeType == XmlNodeType.Text)if (nd.NodeType == XmlNodeType.Element)//去掉注释节点{//newList.Add(nd.InnerText);//获得节点值newList.Add(nd.Name);//获得节点名称}TraverseTextNodeInnerText(nd);}}}public void GetAllTextNodeInnerText(string node, int x, int y, string s){//XmlDocument doc = XMLLoad();XmlNode nd = document.SelectSingleNode(node);TraverseTextNodeInnerText(nd);//return this._TextNodeInnerTexts.ToArray();//int x = 10;//int y = 0;if (s == "textbox"){ncNum = newList.Count;this.panel1.AutoScroll = true;for (int i = 0; i < newList.Count; i++){y += 40;TextBox tb = new TextBox();tb.Location = new Point(x, y);tb.Name = "tb" + i.ToString();tb.Text = newList[i].ToString();//this.Controls.Add(tb);this.panel1.Controls.Add(tb);Label lb = new Label();lb.Name="lb"+ i.ToString();lb.Location = new Point(x-25, y);lb.Text = i.ToString();this.panel1.Controls.Add(lb);}}if (s == "dropdownlist"){this.panel2.AutoScroll = true;for (int i = 0; i < ncNum; i++){y += 40;ComboBox cb = new ComboBox();cb.Location = new Point(x, y);cb.Name = "cb" + i.ToString();for (int j = 0; j < newList.Count; j++){cb.Items.Add(newList[j].ToString());}//this.Controls.Add(cb);this.panel2.Controls.Add(cb);Label lb = new Label();lb.Name = "dlb" + i.ToString();lb.Location = new Point(x - 25, y);lb.Text = i.ToString();this.panel2.Controls.Add(lb);}}}private void button1_Click(object sender, EventArgs e){// Create an instance of the open file dialog box.OpenFileDialog openFileDialog1 = new OpenFileDialog();// Set filter options and filter index.openFileDialog1.Filter = "Text Files (.xml)|*.xml|All Files (*.*)|*.*";openFileDialog1.FilterIndex = 1;openFileDialog1.Multiselect = true;// Process input if the user clicked OK.if (openFileDialog1.ShowDialog() == DialogResult.OK){newList.Clear();systemPath = openFileDialog1.FileName;tbPath.Text = systemPath;LoadStuXml(systemPath);//打开NC模板文档GetAllTextNodeInnerText("ufinterface", 60, 10, "dropdownlist");}}private void comboBox1_SelectedIndexChanged(object sender, EventArgs e){if (comboBox1.Text == "应付单"){checkFile("../DuizhaoXML/"+comboBox1.Text + "对照表" + ".xml");LoadStuXml("../DemoXML/nc.xml");//打开NC模板文档GetAllTextNodeInnerText("ufinterface", 50, 10, "textbox");}if (comboBox1.SelectedText.ToString() == "应收单"){}}private void btnSave_Click(object sender, EventArgs e){createNewXML();}private void createNewXML(){//int txtNum = panel1.Controls.Count;//xml节点个数//for(int i=0;i<txtNum;i++)//{//  //string t= this.Controls["tb"+i].Text;//  if (panel1.Controls[i].Name == "tb" + i)//    {   //        //return i;//        string t = panel1.Controls[i].Text;//    }//}try{XmlTextWriter xmlWriter;string strFilename = "../duizhaoXML/" + comboBox1.Text + "对照表" + ".xml";xmlWriter = new XmlTextWriter(strFilename, Encoding.Default);//创建一个xml文档xmlWriter.Formatting = Formatting.Indented;xmlWriter.WriteStartDocument();xmlWriter.WriteStartElement("Node");//int txtNum = panel1.Controls.Count;//xml节点个数int txtNum = ncNum;for (int i = 0; i < txtNum; i++){//string t= this.Controls["tb"+i].Text;//if (panel1.Controls["tb"+i].Name == "tb" + i.ToString())//{string t = panel1.Controls["tb"+i].Text;//NC模板节点xmlWriter.WriteStartElement(t);xmlWriter.WriteString( panel2.Controls["cb"+i].Text);//外部系统对应节点xmlWriter.WriteEndElement();//}}xmlWriter.WriteEndElement();xmlWriter.Flush();   xmlWriter.Close();}catch (Exception e){MessageBox.Show(e.ToString());}MessageBox.Show("创建成功!");}private void checkFile(string path){FileInfo TheFile = new FileInfo(path);if (TheFile.Exists){MessageBox.Show("对照模板已存在!");}}}
}

效果如下

将两个不同格式的XML文件,进行节点对照,并生成一个用于对照功能的XML相关推荐

  1. java操作xml文件--修改节点

          上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容.       下面依然是首先贴出XML文件: <?xml version ...

  2. javascript读取xml文件读取节点数据的例子

    分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...

  3. python修改xml标签的值_对python修改xml文件的节点值方法详解

    这是我的xml文件结构 <?xml version='1.0' encoding='utf-8'?> JPEGImages train_2018-05-08_1000.jpg D:\all ...

  4. Android合并两个MP3格式的音频文件

    首先,简单的读取两个mp3文件流,然后合并到一个输出流,输出到文件中,这种简单粗暴的方法肯定是不行的,因为 mp3文件有文件头信息和文件尾信息,要处理这些. 所以正确的方案是:要先正确取到各个mp3文 ...

  5. C#中读取xml文件指定节点

    假设xml文件内容是 <?xml version="1.0" encoding="utf-8"?> <Workflow>   <A ...

  6. 读取XML文件的节点内的内容

    <?xml version="1.0" encoding="utf-8" ?> <data> <tag3>15</ta ...

  7. java解析xml生成表格_JAVA读取XML文件并解析 以及 JAVA生成文本文件输出

    废话不多说,直接上代码及说明吧! package Dao; import java.io.File; import java.util.ArrayList; import java.util.List ...

  8. python xml添加节点_python xml文件增加节点实现代码

    公司游戏的接口配置文件采用xml,以前是用sed来修改,可是灵活性太差,有时要修改那个服时,经常会出别的节点给改了,导致语法错误,程序读取失败,玩家无法进入游戏,python有不少的xml的模块,本脚 ...

  9. 一个mapper接口有多个mapper.xml 文件_爱了!分享一个基于Spring Boot的API、RESTful API项目种子(骨架)!...

    点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! 1.☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 2.☞ <Jav ...

最新文章

  1. javascript构造可以上传文件的form表单(通过js修改enctype)
  2. 【小白学习PyTorch教程】十一、基于MNIST数据集训练第一个生成性对抗网络
  3. torch.unsqueeze()和torch.unsqueeze()
  4. cpld xilinx 定义全局时钟_时钟相关概念
  5. 使用mvn插件surefire 执行工程单元测试 出现OOM的解决分析
  6. SAP CRM, C4C和Hybris Commerce的数据迁移策略
  7. 在Orchard中使用Image Gallery模块
  8. Java File类void deleteOnExit()方法(带示例)
  9. 力扣题目——25. K 个一组翻转链表
  10. ecshop商品列表页增加/显示货号SN
  11. 2021-1-28Linux学习纪要
  12. 利用opencv 做一个疲劳检测系统(2)
  13. 大龄人员跨行程序员的自学之路(序)
  14. 分布式文件系统 -- OSS云存储
  15. pycharm切换python环境_在PyCharm的 Terminal(终端)切换Python版本的方法
  16. 根轨迹 matlab 怎么画一半儿,现有 1020 个西瓜,第一天卖一半多两个,以后每天都卖剩下的一半多两个,编程计算几天后能把所有西瓜都卖完? 请编程实现_学小易找答案...
  17. springboot不停机更新(配合Nginx优雅发版)
  18. 怎样在网站网页中插入音乐?
  19. Springboot垃圾分类管理系统836b7计算机毕业设计-课程设计-期末作业-毕设程序代做
  20. ORA-00933:SQL 命令未正确结束(1)

热门文章

  1. 华为机试HJ36:字符串加密
  2. 托福试卷真题_历年托福考试阅读真题汇总含答案
  3. 每年都有人问“IT行业还能再火几年”,现实给出最好的答案
  4. php 批量修改表格数据,PHP批量修改数据库表前缀教程+代码
  5. 中随机打乱序列的函数_excel函数应用:如何快速制作考生座次分配表
  6. Python内置函数ord()与chr()
  7. 如何在NVIDIA(英伟达)官网下载老版本Toolkit-SDK---例如下载CUDA Toolkit 8.0
  8. 单元测试框架-Junit
  9. 学完这篇Charles抓包教程,我直接把fiddler卸载了
  10. invoke 魔术_PHP常用魔术方法(__invoke魔术方法)