C#(ASP.NET)解析xml文件方法教程

1、一般处理

    XmlDocument xmlDoc = new XmlDocument();  
    xmlDoc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?><HH><CODE>11</CODE><NAME>kkkk</NAME></HH>");  
    XmlNode rootNode = xmlDoc.SelectSingleNode("HH");  
    foreach (XmlNode xxNode in rootNode.ChildNodes)  
    {  
        string dsf = xxNode.InnerText;  
        string sdf = xxNode.Name;  
    }  

2、利用DataTable

 DataSet dsData = new DataSet();  
    dsData.ReadXml(new XmlTextReader(new StringReader("<?xml version=\"1.0\" encoding=\"utf-8\"?><HH><CODE>11</CODE><NAME>MMMMM</NAME></HH>")));  
    DataTable dt = dsData.Tables["HH"];  
      
      
    foreach (DataRow dr in dt.Rows)  
    {  
        foreach (DataColumn dc in dr.Table.Columns)  
        {  
            string n = dc.ColumnName;  
            string value = dr[n].ToString();  
         }  
    }  

3、带有命名空间(NameSpace)的XML文本解析

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.lucernepublishing.com"
           xml:base="http://www.semanticweb.org/ontologies/2012/2/OntologyMinePower.owl">
  <book>
    <title>C语言</title>
    <author name ="XIAO">
      <age>25</age>
    </author>
    <price>50</price>
  </book>
  <book>
    <title>数据库</title>
    <price>100</price >
  </book >
  <book>
    <title>数据结构</title>
    <age>100</age>
    <author name ="Wang">
      <age>25</age>
      <sex>female</sex>
    </author>
    <price>66.5</price >
  </book >
</bookstore>
private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"..\..\CD.xml");

            XmlElement root = null;
            root = doc.DocumentElement;

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
            nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
           
            XmlNodeList listNodes = null;
            listNodes = doc.SelectNodes("/ab:bookstore/ab:book[ab:author[ab:sex]]/ab:price", nsmgr);
            foreach (XmlNode node in listNodes )
            {
                richTextBox1.Text += node.InnerText + "\n";
            }
        }

该XPath语言的意思是查询bookstore下的所有带有author节点,并且author节点带有sex节点的book节点的price子节点。其结果是66.5

对于有命名空间的XML文本的解析,只需调用XmlNode.SelectNodes的不同的重载函数,赋予XmlNamespaceManager参数,并相应调整XPath语句即可。

详细参考

1.这里我参照MSDN给出一个XML源文件,为了显示不同的效果,XML结构在逻辑上并不合理

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book>
    <title>C语言</title>
    <author name ="XIAO">
      <age>25</age>
    </author>
    <price>50</price>
  </book>
  <book>
    <title>数据库</title>
    <price>100</price >
  </book >
  <book>
    <title>数据结构</title>
    <age>100</age>
    <author name ="Wang">
      <age>25</age>
      <sex>female</sex>
    </author>
    <price>66.5</price >
  </book >
</bookstore>

2.简单示例

private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"..\..\CD.xml");

            XmlElement root = null;
            root = doc.DocumentElement;

            XmlNodeList listNodes = null;
            listNodes = root.SelectNodes("/bookstore/book/price");
            foreach (XmlNode node in listNodes )
            {
                richTextBox1.Text += node.InnerText + "\n";
            }
        }

喜欢博主的可以点击关注加一键三连,各种ASP.NET系统的源码已上传到主页资源中,欢迎下载

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code:9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值