无法读取Xml的节点名

libra0926 2007-12-18 10:22:03
我可以用XmlNode的innerText属性读取节点标记内的信息,但是我用innerXml读取节点标记返回的是空白
<?xml version="1.0" encoding="gb2312"?>
<Exercise>
<Student>
<Stuid>1</Stuid>
<Sname>aaa</Sname>
<Sage>24</Sage>
</Student>
<Student>
<Stuid>2</Stuid>
<Sname>bbb</Sname>
<Sage>24</Sage>
</Student>
<Student>
<Stuid>3</Stuid>
<Sname>ccc</Sname>
<Sage>24</Sage>
</Student>
<Student>
<Stuid>4</Stuid>
<Sname>ddd</Sname>
<Sage>24</Sage>
</Student>
</Exercise>



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

namespace XmlExercise
{
class Program
{
static string filename = @"e:\Student.xml";

static void showNode(XmlNode xn)
{
if (xn.HasChildNodes)
{
XmlNodeList xnl = xn.ChildNodes;
foreach (XmlNode xx in xnl)
{
showNode(xx);
}
}
else
{
Console.WriteLine(xn.InnerXml);
}
}

static void Main(string[] args)
{
XmlDocument xt = new XmlDocument();
xt.Load(filename);
XmlNode temp = xt.DocumentElement;
showNode(temp);
}
}


请指点一下,该怎样才能读出XML节点标记的信息
...全文
72 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
libra0926 2007-12-18
  • 打赏
  • 举报
回复
感谢jiatong1981
lvxianda 2007-12-18
  • 打赏
  • 举报
回复
学习下
darkeye1983 2007-12-18
  • 打赏
  • 举报
回复
应该是blank space的问题,有两种解决方法,第一种当然是首先删除空白,第二种是根据节点的类型来取值。
我在PHP里用了第二种。
foreach ($DIDL->childNodes as $item)
{
if (($item->nodeType == 1) && ($item->nodeName == "item"))
{
$objID = $item->getAttribute("id");
$title = $item->getElementsByTagName("title")->item(0)->nodeValue;
$title = str_replace(" "," ",htmlspecialchars($title));
}
}
jiatong1981 2007-12-18
  • 打赏
  • 举报
回复

static void showNode(XmlNode xn)
{
if (xn.HasChildNodes)
{
XmlNodeList xnl = xn.ChildNodes;
foreach (XmlNode xx in xnl)
{
showNode(xx);
}
}
else
{
Console.WriteLine(xn.ParentNode.Name);//这样会打印出每个节点的名称 也就是说stuid会出现4次 当然你可以再做处理
}
}
jiatong1981 2007-12-18
  • 打赏
  • 举报
回复

DataSet _Ds = new DataSet();
_Ds.ReadXml(filename);

foreach (DataColumn dc in _Ds.Tables[0].Columns)
{
Console.WriteLine(dc.ColumnName);
}



或者
czjearth 2007-12-18
  • 打赏
  • 举报
回复
单步调试一下, 打印出每步的 OuterXml 和 innerXml 就可以知道了!
libra0926 2007-12-18
  • 打赏
  • 举报
回复
这个我可以显示出来,我的意思是怎么才能从<Sage></Sage>中读出Sage
jiatong1981 2007-12-18
  • 打赏
  • 举报
回复

static void showNode(XmlNode xn)
{
if (xn.HasChildNodes)
{
XmlNodeList xnl = xn.ChildNodes;
foreach (XmlNode xx in xnl)
{
showNode(xx);
}
}
else
{
Console.WriteLine(xn.InnerText);
}
}

110,534

社区成员

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

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

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