Posted on 2009-07-09 16:28
Hero 阅读(133)
评论(0) 编辑 收藏 引用 所属分类:
C#积累
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8
9 using System.Xml;
10
11 namespace XML_print
12 {
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19
20 private void button_Loop_Click( object sender, EventArgs e )
21 {
22 //首先清空ListBox
23 this.listBox_XMLList.Items.Clear();
24
25 //载入XML文档
26 XmlDocument xmldoc = new XmlDocument();
27 xmldoc.Load( @"E:\xml.xml" );
28
29 //递归遍历文档
30 RecurseXmlDocument( (XmlNode)xmldoc.DocumentElement, 0 );
31 }
32
33 private void RecurseXmlDocument( XmlNode root, int deep )
34 {
35 if ( null == root ) return;
36
37 if( root is XmlElement )
38 {
39 //首先打印名字
40 listBox_XMLList.Items.Add( root.Name.PadLeft( root.Name.Length + deep ) );
41
42 //递归调用
43 if( root.HasChildNodes )
44 RecurseXmlDocument( root.FirstChild, deep + 2 ) ;
45
46 if ( root.NextSibling != null )
47 RecurseXmlDocument( root.NextSibling, deep );
48 }
49 else if( root is XmlText )
50 {
51 //打印文本
52 string text = ( (XmlText)root ).Value;
53 listBox_XMLList.Items.Add( text.PadLeft( text.Length + deep ) );
54 }
55 else if( root is XmlComment )
56 {
57 string text = root.Value;
58 listBox_XMLList.Items.Add( text.PadLeft( text.Length + deep ) );
59
60 if ( root.HasChildNodes )
61 RecurseXmlDocument( root.FirstChild, deep + 2 );
62
63 if ( root.NextSibling != null )
64 RecurseXmlDocument( root.NextSibling, deep );
65 }
66 }
67
68 private void Form1_Load( object sender, EventArgs e )
69 {
70
71 }
72
73 private void button_Create_Click( object sender, EventArgs e )
74 {
75 //首先读取文档
76 XmlDocument xmldoc = new XmlDocument();
77 xmldoc.Load( @"E:/xml.xml" );
78
79 //获取根节点
80 XmlElement root = xmldoc.DocumentElement;
81
82 //创建新节点
83 XmlElement newBook = xmldoc.CreateElement( "book" );
84 XmlElement newTitle = xmldoc.CreateElement( "title" );
85 XmlElement newAuthor = xmldoc.CreateElement( "author" );
86 XmlElement newCode = xmldoc.CreateElement( "code" );
87
88 XmlText title = xmldoc.CreateTextNode( "X" );
89 XmlText author = xmldoc.CreateTextNode( "xxx" );
90 XmlText code = xmldoc.CreateTextNode( "11111" );
91
92 XmlComment commont = xmldoc.CreateComment( "this is a commont" );
93
94 //插入这个元素
95 newBook.AppendChild( commont );
96 newBook.AppendChild( newTitle );
97 newBook.AppendChild( newAuthor );
98 newBook.AppendChild( newCode );
99
100 newTitle.AppendChild( title );
101 newAuthor.AppendChild( author );
102 newCode.AppendChild( code );
103
104 root.InsertAfter( newBook, root.FirstChild );
105
106 //保存XML文档
107 xmldoc.Save( @"E:/xml.xml" );
108 }
109 }
110 }