首页 新闻 搜索 专区 学院

怎么用C# XmlDocument文档对象模型输出XMl以上三本书的文本及总本数

0
悬赏园豆:5 [已解决问题] 解决于 2014-01-11 10:42
<?xml version="1.0"?>
<books>
<book> <title>标题111</title> <name>作者111</name> <price>价格111</price> </book> <book> <title>标题222</title> <name>作者222</name> <price>价格222</price> </book> <book> <title>标题333</title> <name>作者333</name> <price>价格333</price> </book>
<count>3本</count>
</books>

怎么用C# XmlDocument文档对象模型输出XMl以上三本书的文本及总本数

Ewin的主页 Ewin | 初学一级 | 园豆:17
提问于:2013-03-03 13:14
< >
分享
最佳答案
0

获取书本标题

XmlDocument doc = new XmlDocument();

        if (File.Exists(@"d:\1.xml"))  //xml文件存在

            {

                doc.Load(@"d:\1.xml");  //加载

                XmlNode parent = doc.DocumentElement;  //获取根节点

 

                foreach(XmlNode node in  parent.ChildNodes )  //遍历根节点的子节点,获取book节点

                {

 

                    XmlNodeList xnls = node.ChildNodes;    //获取book节点的字节

                    foreach (XmlNode xn in xnls)  //读取文本

                    {

                       Console.WriteLine(xn.InnerText);

                     }

                }

     

            }

 

 

收获园豆:5
何丽丽 | 菜鸟二级 |园豆:207 | 2013-03-04 10:45
其他回答(4)
0

xpath查询book/count节点,计算查询结果。

一只小小菜鸟 | 园豆:204 (菜鸟二级) | 2013-03-03 18:24

能具体点吗

支持(0) 反对(0) Ewin | 园豆:17 (初学一级) | 2013-03-03 18:41
0

linq to xml 使用时请引用using System.Xml.Linq;

 

var res = from o in XElement.Load(Server.MapPath("test.xml")).Elements("book")
select o;

var count = res.Count(); //3
foreach (var item in res)
{
// item.ToString(); "<book>\r\n <title>标题111</title>\r\n <name>作者111</name>\r\n <price>价格111</price>\r\n</book>"
}

Sandglass | 园豆:52 (初学一级) | 2013-03-04 12:05

不是一整行的输出且不能带节点

支持(0) 反对(0) Ewin | 园豆:17 (初学一级) | 2013-03-04 19:14

@Ewin: 兄弟,我就是提供个思路,item本身是个节点,那么获取他这里面的子节点还得都写出来吗?自已试试你就会发现怎么获取里面的内容。学习不认识真哦。

item.Attribute("title"); //标题111
item.Attribute("name"); //作者111

支持(0) 反对(0) Sandglass | 园豆:52 (初学一级) | 2013-03-05 08:45
0

何丽丽说的方法没错

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;
using System.Xml;

namespace ConsoleApplication3
{
    class Test
    {
        static void Main()
        {
            XmlDocument doc = new XmlDocument();
            if (File.Exists(@"d:\1.xml"))  //xml文件存在
            {
                doc.Load(@"d:\1.xml");  //加载
                XmlNode parent = doc.DocumentElement;  //获取根节点
                foreach (XmlNode node in parent.ChildNodes)  //遍历根节点的子节点,获取book节点
                {
                    XmlNodeList xnls = node.ChildNodes;    //获取book节点的字节
                    foreach (XmlNode xn in xnls)  //读取文本
                    {
                        Console.WriteLine(xn.InnerText);
                    }
                }
            }
        }
    }
}

输出:
Title111
Author111
Price111
Title222
Author222
Price222
Title333
Author333
Price333
3

beyondchina | 园豆:680 (小虾三级) | 2013-03-26 14:16

+1

支持(0) 反对(0) 何小宝 | 园豆:19 (初学一级) | 2013-09-29 14:05
0

XmlNodeList xnls = node.ChildNodes; //获取book节点的字节 

这行我有点不理解。这是个集合还是什么意思呢? 谁能解释下/

wasdzjh | 园豆:202 (菜鸟二级) | 2016-03-08 14:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册