我又来提问了 关于XML node的问题

Anod 2012-06-28 02:45:10
- <bookstore>
- <book genre="autobiography" publicationdate="1991" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
- <author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
- <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
- <author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
- <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
- <author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>


为什么上述<title>The Autobiography of Benjamin Franklin</title>
中title node的value值为null 而竟然HasChildNodes为true, “The Autobiography of Benjamin Franklin”是作为一个名为“#Text”的ChildNode的Value值出现的,InnerText也是“The Autobiography of Benjamin Franklin”,但是InnerXml为空的字符串“”。求解释。 我需要把一个Node下的所有递归子节点或属性的name和对应的值输出出来。
...全文
139 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
silentcross 2012-06-29
  • 打赏
  • 举报
回复
linq需要的是.net framework 3.5及以上,跟你的开发工具没有关系
linq用lambda表达式有时候很方便并不是非得用不可
譬如不支持lambda表达式的各种蛋疼问题我从来没遇到过
silentcross 2012-06-29
  • 打赏
  • 举报
回复
<title>是个BeginElement节点,没有value
<title>有个child节点,就是那个text节点 The Autobiography of Benjamin Franklin
这个text节点是有value的
<title>节点的innertext是包括在BeginElement和EndElement之间的文本
silentcross 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
整个应该是一个node吧 要不然如何会有parent和child的关系??
据说2005不支持LINQ....................
[/Quote]

你懂还是我懂啊,都跟你说这么明白了

Anod 2012-06-29
  • 打赏
  • 举报
回复
有人说 即使添加引用, linq可以用也很复杂 譬如不支持Lambda Expression等各种蛋疼问题。。。所以还是使用dom吧。我只是想知道现象出现的原因,至于怎么解决还是自己来想。

为什么上述<title>The Autobiography of Benjamin Franklin</title>
中title node的value值为null 而竟然HasChildNodes为true, “The Autobiography of Benjamin Franklin”是作为一个名为“#Text”的ChildNode的Value值出现的,InnerText也是“The Autobiography of Benjamin Franklin”,但是InnerXml为空的字符串“”。求解释。
Anod 2012-06-29
  • 打赏
  • 举报
回复
难道安装了高版本的.net framwork 然后添加相应的引用如System.core或者System.Xml.Linq就可以?
Anod 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
<title>The Autobiography of Benjamin Franklin</title> 中

<title>是一个node,类型是BeginElement(大概是这名字吧)
The Autobiography of Benjamin Franklin 也是个node 类型是Text
</title> 还是个node,类型是EndElement

并不是说这整个是一个……
[/Quote]

整个应该是一个node吧 要不然如何会有parent和child的关系??
据说2005不支持LINQ....................
Anod 2012-06-29
  • 打赏
  • 举报
回复
以下来源为引自http://www.w3school.com.cn/xmldom/dom_nodetree.asp


这颗节点树展示了节点的集合,以及它们之间的联系。这棵树从根节点开始,然后在树的最低层级向文本节点长出枝条:



找到证据了,说的是图中的都是节点,只是还有没有解决的方法。。。
Anod 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
<title>是个BeginElement节点,没有value
<title>有个child节点,就是那个text节点 The Autobiography of Benjamin Franklin
这个text节点是有value的
<title>节点的innertext是包括在BeginElement和EndElement之间的文本
[/Quote]

我只是说整个<title>***</title>是个node,这个因为它可以xmlnode对象的形式表达 且有child ,它的child对象的parent是node,即<title>***</title>不可能不是node啊。。。。。

你的意思应该表达的是 <title>是BeginElement节点,***是Element节点 </title>EndElement节点,你强调的重点是节点类型,这个没理解错吧?这个我是知道的,我只是不理解整个<title>***</title>的Value为什么是null?

举个例子

<title>The Gorgias
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</title>

在这个节点中要读取和写入The Gorgias这个值,我遇到了问题。我不知该用什么来让程序知道我要读取和写入的是The Gorgias,而且知道读取和写入的是在那个位置?如果要我用FirstChild或者LastChild,那么遇到下面例子的问题还是解决不了,这样的xml虽然很少出现或者可能不符合常见的档案规范,但这样的xml文档还是可以被IE打开而不报错的,按照现在XML文档的国际规范严密度,存在应是合理的吧?

<title>The Gorgias
<author>name1
<firstname>Plato</firstname>
name2
<lastname>Plato</lastname>
name3
</author>
<price>9.99</price>
</title>
silentcross 2012-06-28
  • 打赏
  • 举报
回复
<title>The Autobiography of Benjamin Franklin</title> 中

<title>是一个node,类型是BeginElement(大概是这名字吧)
The Autobiography of Benjamin Franklin 也是个node 类型是Text
</title> 还是个node,类型是EndElement

并不是说这整个是一个node

你用dom api干啥,用Linq to xml不是多方便的
cuitstudio_andy 2012-06-28
  • 打赏
  • 举报
回复
<title>asdf</title>

这样的XML结构,asdf会被视为一个文本节点,所以你要访问title节点下的文本时,你需要node.FirstChild.Value这样访问才行。
cnfixit 2012-06-28
  • 打赏
  • 举报
回复
你光贴你的xml文件不贴你的代码,鬼知道你怎么写的
Anod 2012-06-28
  • 打赏
  • 举报
回复
救急 救急 帖子别沉了哇

111,096

社区成员

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

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

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