<?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以上三本书的文本及总本数
获取书本标题
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);
}
}
}
xpath查询book/count节点,计算查询结果。
能具体点吗
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>"
}
不是一整行的输出且不能带节点
@Ewin: 兄弟,我就是提供个思路,item本身是个节点,那么获取他这里面的子节点还得都写出来吗?自已试试你就会发现怎么获取里面的内容。学习不认识真哦。
item.Attribute("title"); //标题111
item.Attribute("name"); //作者111
何丽丽说的方法没错
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
+1
XmlNodeList xnls = node.ChildNodes; //获取book节点的字节
这行我有点不理解。这是个集合还是什么意思呢? 谁能解释下/