xml学习

本文介绍了一个使用 C# 进行 XML 文件创建及读取的示例程序。通过该程序,读者可以了解到如何利用 XmlWriter 和 XmlDocument 类来生成和解析 XML 数据。此外,还展示了如何动态创建 DataTable 来组织文件夹内容。

<?xml version="1.0" encoding="utf-8" ?>
<character>
  <select>
    <id>0</id>
    <name>1</name>
    <where></where>
  </select>
  <from>
    <id>1</id>
    <name>name</name>
  </from>
  <where>
    <faild></faild>
    <bb></bb>
    <aa></aa>
  </where>

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;

namespace WinFormTest
{
    
public partial class Form1 : Form
    {
        
public Form1()
        {
            InitializeComponent();
        }

        
private void Form1_Load(object sender, EventArgs e)
        {

        }

        
private void button1_Click(object sender, EventArgs e)
        {
            createXml();
        }
        
private void createXml()
        {
            XmlWriterSettings settings 
= new XmlWriterSettings();
            settings.Indent 
= true;
            settings.IndentChars 
= ("    ");
            
using (XmlWriter writer = XmlWriter.Create("c:/books.xml", settings))
            {
                
// Write XML data.
                
// writer.WriteStartElement("book");
                writer.WriteComment("test");
                writer.WriteStartElement(
"book");
                writer.WriteElementString(
"title""ti");
                writer.WriteElementString(
"price""19.95");
                writer.WriteEndElement();
                writer.Flush();
            }


        
        }
        
//public DataTable Bind(string fullFolderPath)//创建数据表读取文件夹内容
        
//{
        
//    //以下是动态创建数据表的方法
        
//    DataTable dt = new DataTable();
        
//    DataRow dr;
        
//    //首先创建数据表结构
        
//    dt.Columns.Add(new DataColumn("type", System.Type.GetType("System.String")));//类型
        
//    dt.Columns.Add(new DataColumn("name", System.Type.GetType("System.String")));//名称
        
//    dt.Columns.Add(new DataColumn("action", System.Type.GetType("System.String")));//操作
        
//    dt.Columns.Add(new DataColumn("owner", System.Type.GetType("System.String")));//创建人
        
//    //为每一行填充数据
        
//    foreach (string d in Directory.GetFileSystemEntries(fullFolderPath))
        
//    {
        
//        dr = dt.NewRow();//建新行
        
//        string[] parts = d.Split(new char[] { '/' });
        
//        string txt = parts[parts.Length - 1];//取最后一部分的字符串,它将可能是文件名或文件夹
        
//        dr[1] = txt;//名称name
        
//        if (File.Exists(d))//如果是文件
        
//        {
        
//            dr[0] = "文件";//类型type 
        
//            int pos = currFullPath.IndexOf("NetHard");
        
//            string relaUrl = currFullPath.Substring(pos);
        
//            string
        
//            url = "http://10.80.50.1/SharedSpace/" + relaUrl + "/" + txt;//10.80.50.1为作者服务器地址,你应该将它修改为你所在服务器地址
        
//            dr[2] = "<a href=" + url + " target=_blank" + ">下载</a>";
        
//        }
        
//        else if (Directory.Exists(d))
        
//        {//如果是文件夹
        
//            dr[0] = "文件夹";//type类型
        
//            string passWord = GetFolderPassword(d);//取得文件夹密码信息
        
//            int type = GetFolderLimitType(d);
        
//            if ((password != "no") && (type != 1))
        
//                dr[2] = "<a href=PasswordValidate.aspx?path=" + d + ">密封</a>";//操作action
        
//            else
        
//                dr[2] = "<a href=Default.aspx?path=" + d + ">进入</a>";//操作action
        
//            dr[3] = GetFolderOwner(d);//取文件夹创建者名
        
//        }
        
//        else
        
//            //Response.Write("<script>alert('无对象可绑定!')</script>");
        
//        dt.Rows.Add(dr);//添加行
        
//        return dt;//返回数据表
        
//    }
        
//}

        
public void CreateXmlOrAddFrag(string xmlFullPath, string folderFullPath, string owner, string password, int type)
        {
            XmlDocument xmlDoc 
= new XmlDocument();
            
string xml = "";
            
string xmlNode = "<character>";
            xmlNode 
+= "<fullPath>";
            xmlNode 
+= folderFullPath;
            xmlNode 
+= "</fullPath>";
            xmlNode 
+= "<owner>";
            xmlNode 
+= owner;
            xmlNode 
+= "</owner>";
            xmlNode 
+= "<password>";
            xmlNode 
+= password;
            xmlNode 
+= "</password>";
            xmlNode 
+= "<type>";
            xmlNode 
+= type;
            xmlNode 
+= "</type>";
            xmlNode 
+= "</character>";
            
if (!File.Exists(xmlFullPath))
            {
//不存在则创建xml存储文件
                xml = "<?xml version='1.0' encoding='gb2312'?>";
                xml 
+= "<folder>";
                xml 
+= xmlNode;
                xml 
+= "</folder>";
                xmlDoc.LoadXml(xml);
                xmlDoc.Save(xmlFullPath);
//存储文件
            }
            
else
            {
//存在xml存储文件则添加新的文档片段
                xmlDoc.Load(xmlFullPath);
                XmlDocumentFragment docFrag 
= xmlDoc.CreateDocumentFragment();//文档片元素节点
                docFrag.InnerXml = xmlNode;
                XmlNode currNode 
= xmlDoc.DocumentElement;//获取文档根节淀
                currNode.InsertBefore(docFrag, currNode.FirstChild);//插入文档段
                xmlDoc.Save(xmlFullPath);//存储改变
            }
        }

        
private void button2_Click(object sender, EventArgs e)
        {
            StringBuilder sb 
= new StringBuilder();
            
using (XmlReader reader = XmlReader.Create(@"c:ooks.xml"))
            {

                
while (reader.Read())
                {
                    
if (reader.IsStartElement())
                    {
                        
if (reader.IsEmptyElement)
                            Console.WriteLine(
"<{0}/>", reader.Name);
                        
else
                        {
                            Console.Write(
"<{0}> ", reader.Name);
                            reader.Read(); 
// Read the start tag.
                            if (reader.IsStartElement())  // Handle nested elements.
                                Console.Write(" <{0}>", reader.Name);
                            Console.WriteLine(reader.ReadString());  
//Read the text content of the element.
                        }
                    }
                } 



            }
            textBox1.Text 
= sb.ToString();
        }


    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值