这样一个XML文件,如何读取?

microsmartechnology 2010-07-07 11:13:11
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:gd="http://schemas.google.com/g/2005"
xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/"
xmlns:db="http://www.douban.com/xmlns/">
<category scheme="http://www.douban.com/2007#kind"
term="http://www.douban.com/2007#book" />
<db:tag count="15" name="片山恭一" />
<db:tag count="6" name="小说" />
<db:tag count="5" name="日本小说" />
<db:tag count="2" name="日本文学" />
<db:tag count="2" name="日本" />
<title>倘若我在彼岸-日本畅销爱情小说</title>
<author>
<name>片山恭一</name>
</author>
<summary>
本书由三个看似独立实则相通的凄美的爱情故事组成。主人公是老师,都喜欢某种运动,他们都曾亲身经历过或目睹过接近死神的一瞬间并从中感悟或懂得了生命中的某些东西。
这是作者在《在世界中心呼唤爱》后的首部爱情小说集。片山恭一,学生时代通读了包括夏目漱石和大江健三郎在内的日本近现代文学全集,同时读了从笛卡尔、莱布尼茨到结构主义的欧洲近现代哲学,也读了马克思。自二十二三岁开始创作小说,《气息》、《世界在你不知道的地方运转》、《别相信约翰•列侬》等均为他的代表作。
</summary>
<link rel="self" href="http://api.douban.com/book/subject/2023013" />
<link rel="collection" href="http://api.douban.com/collection/1234567" /><!-- API认证授权后才包含 -->
<link rel="alternate" href="http://book.douban.com/subject/2023013/" />
<link rel="image" href="http://t.douban.com/spic/s2328836.jpg" />
<db:attribute name="isbn10">7543639130</db:attribute>
<db:attribute name="isbn13">9787543639133</db:attribute>
<db:attribute name="pages">193</db:attribute>
<db:attribute name="tranlator">张兴</db:attribute>
<db:attribute name="price">14</db:attribute>
<db:attribute name="author">片山恭一</db:attribute>
<db:attribute name="publisher">青岛出版社</db:attribute>
<db:attribute name="binding">平装</db:attribute>
<db:attribute name="author-intro">
片山恭一,1959年生于日本爱媛县,九州大学农学系农业经济学专业毕业。学生时代通读了包括夏目漱石和大江健三郎在内的日本近现代文学全集,同时读了从笛卡尔、莱布尼茨到结构主义的欧洲近现代哲学。也读了马克思。学士论文写的是马克思,硕士论文写的是恩格斯。二十二三岁开始创作小说。代表作有《在世界中心呼唤爱》、《世界在你不知道的地方运转》、《满月之夜白鲸现》、《空镜头》以及新作《倘若我在彼岸》《雨天的海豚们》、《最后盛开的花》等。
</db:attribute>
<id>http://api.douban.com/book/subject/2023013</id>
<gd:rating min="1" numRaters="12" average="4.00" max="5" />
</entry>
...全文
347 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
LovingAlison 2010-07-09
  • 打赏
  • 举报
回复
这就是一个很普通的xml啊 没有任何特殊之处吧

string xmlpath = ConfigurationManager.AppSettings["RolesConfig"];
XmlDocument doc = new XmlDocument();
doc.Load(xmlpath);
XmlNodeList nodes = doc.SelectSingleNode(parentNodePath).ChildNodes;
foreach (XmlElement node in nodes)
{
if (node.Name == childNodeName)
{
if (node.Attributes[matchElementName].Value == id)
{
outPut = node.Attributes[elementName].Value;
}
}
}

keyouea 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 microsmartechnology 的回复:]
keyouea 是女的就帮忙,是男的就漂过,你到底会不会啊?别自己还没弄明白!
[/Quote]

哈哈哈,不就一xml么,你要先弄明白这个xml的结构,然后就最简单的xml操作还不会?
找找XmlNodes能提供什么方法给你用就行拉.
  • 打赏
  • 举报
回复
keyouea 是女的就帮忙,是男的就漂过,你到底会不会啊?别自己还没弄明白!
amwsse21q 2010-07-08
  • 打赏
  • 举报
回复
来看看的
keyouea 2010-07-08
  • 打赏
  • 举报
回复
是女的就帮忙,是男的就漂过
  • 打赏
  • 举报
回复
???????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????
难道CSDN 就没有人能解决吗?
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8" ?>
- <entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" ">

<id>http://api.douban.com/book/subject/2023013</id>
<summary>本书由三个等均为他的代表作。</summary>
<db:attribute name="pages">193</db:attribute> <db:attribute name="price">14.0</db:attribute>
<db:attribute name="pubdate">2007-01-01</db:attribute>

<db:tag count="64" name="片山恭一" />
<db:tag count="29" name="日本文学" />
</entry>

上面就是整个结构,现在我读取[id,summary]元素可以,就是不知道如何读取红色部分,
XmlDocument doc = new XmlDocument();
doc.Load("http://api.douban.com/book/subject/isbn/" + strISBN);
xPathNavigator na = doc.CreateNavigator();

XmlNamespaceManager ns = new XmlNamespaceManager(na.NameTable);
ns.AddNamespace("atom", "http://www.w3.org/2005/Atom");

XPathNodeIterator nodes;
XmlNode node;
XmlNodeList nodeList;

node = doc.DocumentElement["summary"];
Console.WriteLine("Summary:\t\t {0}", node.InnerText); //OK

//读取这部分的代码如何写啊?
<db:attribute name="price">14.0</db:attribute> 和 <db:tag count="29" name="日本文学" />

这部分是元素啊,还是属性啊,如何读取啊????????????
purpleflames 2010-07-08
  • 打赏
  • 举报
回复
Ryan20082009 我看你好眼熟呀,我今天刚安家在csdn 好像看你回xml帖几次啦 缘分呐 貌似你也安家不久? 这个xml就是不太容易看完整 楼主能不能把不重要的东西删掉一部分 我看看它结构
  • 打赏
  • 举报
回复
自己项一下?
  • 打赏
  • 举报
回复

Ryan20082009感谢你的回复,能按我的思路写一下吗?
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.Load("http://api.douban.com/book/subject/isbn/" + strISBN);
xPathNavigator na = doc.CreateNavigator();

XmlNamespaceManager ns = new XmlNamespaceManager(na.NameTable);
ns.AddNamespace("atom", "http://www.w3.org/2005/Atom");

XPathNodeIterator nodes;
XmlNode node;
XmlNodeList nodeList;

node = doc.DocumentElement["title"];
Console.WriteLine("Feed Information");
Console.WriteLine("Title:\t\t{0}",node.InnerText); //OK

node = doc.DocumentElement["summary"];
Console.WriteLine("Summary:\t\t {0}", node.InnerText); //OK

node = doc.DocumentElement["author"]; //OK
Console.WriteLine("Author:\t\t{0}", node.InnerText);

//提取<db:attribute name="pages">193</db:attribute> ,和 <db:tag count="20" name="小说" /> 有错误,不知如何提取,下面的代码应该如何写啊????
Ryan20082009 2010-07-08
  • 打赏
  • 举报
回复
读取xml的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Schema;
using System.Collections.Generic;
using System.Xml;
namespace XmlAA
{
public class ReadXml
{
public static void Main()
{
XmlReaderSettings setting = new XmlReaderSettings();
//Insert Template.
setting.Schemas.Add(null,@"..\..\po.xsd");
//Validate.
setting.ValidationType = ValidationType.Schema;
//Does not handle errors, but displays an error message.
setting.ValidationEventHandler += new ValidationEventHandler(EvenHandler);

XmlReader reader = XmlReader.Create(@"..\..\Vol.xml",setting);
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Text)
{
Console.WriteLine(reader.Value);
}
}
Console.ReadLine();
}

public static void EvenHandler(object sender, ValidationEventArgs e)
{
//Error message
Console.WriteLine("The method or operation is not implemented.");
}
}
}
  • 打赏
  • 举报
回复
高人指点迷津啊!!!!!!!!!!!!!!!!!!!
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8" ?>
- <entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
<id>http://api.douban.com/book/subject/2023013</id>
<title>倘若我在彼岸-日本畅销爱情小说</title>
<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#book" />
+ <author>
<name>片山恭一</name>
</author>
<link href="http://api.douban.com/book/subject/2023013" rel="self" />
<link href="http://book.douban.com/subject/2023013/" rel="alternate" />
<link href="http://t.douban.com/spic/s2328836.jpg" rel="image" />
<summary>本书由三个看似独立实则相通的凄美的爱情故事组成。主人公是老师,都喜欢某种运动,他们都曾亲身经历过或目睹过接近死神的一瞬间并从中感悟或懂得了生命中的某些东西。 这是作者在《在世界中心呼唤爱》后的首部爱情小说集。片山恭一,学生时代通读了包括夏目漱石和大江健三郎在内的日本近现代文学全集,同时读了从笛卡尔、莱布尼茨到结构主义的欧洲近现代哲学,也读了马克思。自二十二三岁开始创作小说,《气息》、《世界在你不知道的地方运转》、《别相信约翰·列侬》等均为他的代表作。</summary>
<db:attribute name="isbn10">7543639130</db:attribute>
<db:attribute name="isbn13">9787543639133</db:attribute>
<db:attribute name="title">倘若我在彼岸-日本畅销爱情小说</db:attribute>
<db:attribute name="pages">193</db:attribute>
<db:attribute name="translator">张兴</db:attribute>
<db:attribute name="price">14.0</db:attribute>
<db:attribute name="author">片山恭一</db:attribute>
<db:attribute name="publisher">青岛出版社</db:attribute>
<db:attribute name="binding">平装</db:attribute>
<db:attribute name="pubdate">2007-01-01</db:attribute>
<db:attribute name="author-intro">片山恭一,1959年生于日本爱媛县,九州大学农学系农业经济学专业毕业。学生时代通读了包括夏目漱石和大江健三郎在内的日本近现代文学全集,同时读了从笛卡尔、莱布尼茨到结构主义的欧洲近现代哲学。也读了马克思。学士论文写的是马克思,硕士论文写的是恩格斯。二十二三岁开始创作小说。代表作有《在世界中心呼唤爱》、《世界在你不知道的地方运转》、《满月之夜白鲸现》、《空镜头》以及新作《倘若我在彼岸》《雨天的海豚们》、《最后盛开的花》等。</db:attribute>
<db:tag count="64" name="片山恭一" />
<db:tag count="29" name="日本文学" />
<db:tag count="20" name="小说" />
<db:tag count="18" name="日本" />
<db:tag count="12" name="日本小说" />
<db:tag count="11" name="倘若我在彼岸" />
<db:tag count="10" name="爱情" />
<db:tag count="10" name="纯爱" />
<gd:rating average="7.2" max="10" min="0" numRaters="124" />
</entry>


上面是一个xml文件, 下面是我的提取XML的信息方法,现在无法提取XML里的红色部分,特来请教,急啊!
XmlDocument doc = new XmlDocument();
doc.Load("http://api.douban.com/book/subject/isbn/" + strISBN);
xPathNavigator na = doc.CreateNavigator();

XmlNamespaceManager ns = new XmlNamespaceManager(na.NameTable);
ns.AddNamespace("atom", "http://www.w3.org/2005/Atom");

XPathNodeIterator nodes;
XmlNode node;
XmlNodeList nodeList;

node = doc.DocumentElement["title"];
Console.WriteLine("Feed Information");
Console.WriteLine("Title:\t\t{0}",node.InnerText); //OK

node = doc.DocumentElement["summary"];
Console.WriteLine("Summary:\t\t {0}", node.InnerText); //OK

node = doc.DocumentElement["author"]; //OK
Console.WriteLine("Author:\t\t{0}", node.InnerText);
//提取<db:attribute name="pages">193</db:attribute> ,和 <db:tag count="20" name="小说" /> 有错误,不知如何提取,下面的代码应该如何写啊????

nodeList = doc.SelectNodes("//db:attribute");
Console.WriteLine("Pages:\t\t{0}", node.InnerText);
?????????????????????????????????.....................
Jellyfancy 2010-07-07
  • 打赏
  • 举报
回复
用xmldocument呗,遍历节点就ok了
xmldocument xmldoc=new xmldocument;
  • 打赏
  • 举报
回复
高人呢,急啊,都搞了10了天了!
  • 打赏
  • 举报
回复
高人指点一下
  • 打赏
  • 举报
回复
刚去修理了一下网络, 我不是专业做开发的,对XML不熟悉,我也定义了一个
XPathNavigator navigator = GetBookAtomEntry(ISBN);
if (navigator == null) return null;
XmlNamespaceManager ns = new XmlNamespaceManager(navigator.NameTable);
ns.AddNamespace("openSearch", "http://a9.com/-/spec/opensearchrss/1.0/");
ns.AddNamespace("atom", "http://www.w3.org/2005/Atom");
ns.AddNamespace("db", "http://www.douban.com/xmlns");
XPathNodeIterator nodes;

DbBook BookInfo = new DbBook();
BookInfo.ISBN = ISBN;

// Book pages
nodes = navigator.Select("descendant::db:attribute name='pages'", ns); 这部分,我如何读取页数,我现在的这个写法提示有错误,正确的应该如何写?

geniusatm4 2010-07-07
  • 打赏
  • 举报
回复
你可以通过XPath去读,可以看看相关的文章
如果层次很复杂又不想看,下个软件 XMLEditor,他可以帮你看出每个节点的Xpath
风之影子 2010-07-07
  • 打赏
  • 举报
回复
先重新整理对XML的定义

加载更多回复(10)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧