简单的XML读取问题

lifeixie 2008-07-15 12:48:58
data.xml




<?xml version="1.0" encoding="utf-8"?>
<data>
<id>asdfsdf</id>
<kmobile>aa</kmobile>
<kdate>fffff</kdate>
<kfrom>58.3</kfrom>
<kdata>Cfffff通</kdata>
</data>

XML文件如上面所写的,没错,XML浏览也正常


读取代码如下
private void button1_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load("data.xml");


XmlNode xn = doc.SelectSingleNode("data");
XmlNodeList xnl = xn.ChildNodes;
//XmlNode xn = doc.SelectSingleNode("data");
foreach (XmlNode xnf in xnl)
{
XmlElement xe = (XmlElement)xnf;
//ds dta = new ds();
string a = xe.GetAttribute("kmobile");
string b = xe.GetAttribute("id");
string c = xe.GetAttribute("kdata");
string f = xe.GetAttribute("kdate");

}

}


为何读不出来??????读出来的是 ""里面什么没有
哪里错了
我XML没错,所以不需要改XML里面的代码

请问如何把上面的XML读出来!!!()!
...全文
100 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
GhostAdai 2008-07-15
  • 打赏
  • 举报
回复
取节点的值要用InnerText,GetAttribute获取的是属性
lifeixie 2008-07-15
  • 打赏
  • 举报
回复
哦,明白了,好象是这样
XmlDocument doc = new XmlDocument();
doc.Load("data.xml");
//方法1

XmlNodeList xn = doc.SelectSingleNode("NewDataSet").ChildNodes;

foreach (XmlNode xe in xn)
{
string a = xe.ChildNodes[0].InnerText;
string b = xe.ChildNodes[1].InnerText;
string c = xe.ChildNodes[2].InnerText;
string d = xe.ChildNodes[3].InnerText;

//string aa = xe.InnerText;


}
lifeixie 2008-07-15
  • 打赏
  • 举报
回复
上面的代码抱错无法转换

读个简单的XML当个数据表用
先读行 !读出行之后不会还得循环读列吧???? 没索引 还得循环列吧????
ericzhangbo1982111 2008-07-15
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<data id=1>
<id>asdfsdf </id>
<kmobile>aa </kmobile>
<kdate>fffff </kdate>
<kfrom>58.3 </kfrom>
<kdata>Cfffff通 </kdata>
</data>
<data id=2>
<id>dfas </id>
<kmobile>dfs </kmobile>
<kdate>dfas </kdate>
<kfrom>fdas </kfrom>
<kdata>adfs </kdata>
</data>
<data>
<id>dfas </id>
<kmobile>dfsa </kmobile>
<kdate>dfs </kdate>
<kfrom>dfs </kfrom>
<kdata>dfs </kdata>
</data>
</NewDataSet>

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("data.xml"));
//方法1

XmlNodeList xn = doc.SelectSingleNode("/NewDataSet/data[id=1]");

foreach (XmlNode xe in xn.ChildNodes)
{

string aa = xe.InnerText;


}
lifeixie 2008-07-15
  • 打赏
  • 举报
回复
有点乱
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<data>
<id>asdfsdf </id>
<kmobile>aa </kmobile>
<kdate>fffff </kdate>
<kfrom>58.3 </kfrom>
<kdata>Cfffff通 </kdata>
</data>
<data>
<id>dfas</id>
<kmobile>dfs</kmobile>
<kdate>dfas</kdate>
<kfrom>fdas</kfrom>
<kdata>adfs</kdata>
</data>
<data>
<id>dfas</id>
<kmobile>dfsa</kmobile>
<kdate>dfs</kdate>
<kfrom>dfs</kfrom>
<kdata>dfs</kdata>
</data>
</NewDataSet>


比如 3行数据
如何 象读数据库表那样
先读行,读到行了,在一个索引(index或者直接打列名)把当前行的列值读出来啊!!!???给读出来啊。
ericzhangbo1982111 2008-07-15
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8"?>
<data>
<id>asdfsdf </id>
<kmobile>aa </kmobile>
<kdate>fffff </kdate>
<kfrom>58.3 </kfrom>
<kdata>Cfffff通 </kdata>
</data>
<data>
<id>asdfsdf </id>
<kmobile>aa </kmobile>
<kdate>fffff </kdate>
<kfrom>58.3 </kfrom>
<kdata>Cfffff通 </kdata>
</data>



XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("data.xml"));
//方法1

XmlNodeList xn = doc.SelectNodes("/data");

foreach (XmlNode xe in xnl)
{
foreach(XmlNode x in xe)
string aa = x.InnerText;


}
lifeixie 2008-07-15
  • 打赏
  • 举报
回复
如果有两行数据的话,如何编历读取啊??
sxmonsy 2008-07-15
  • 打赏
  • 举报
回复
GetAttribute 读的是属性不是节点.节点用XmlNode.

XmlNodeList nodeList=xmlDoc.SelectSingleNode("data").ChildNodes;//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;
string AAA= xe.name+";"+xe.InnerText;
}

宝_爸 2008-07-15
  • 打赏
  • 举报
回复
god,居然回复了3遍
kbryant 2008-07-15
  • 打赏
  • 举报
回复
关注帮顶
maddemon 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 FlynnD 的回复:]
GetAttribute 好像是读形如 <ID name="myid" isShow="true">XXXXXX </ID>的name的
[/Quote]

[Quote=引用 6 楼 ericzhangbo1982111 的回复:]
GetAttribute 取得的属性
而你需要的是innertext
[/Quote]
孟子E章 2008-07-15
  • 打赏
  • 举报
回复
GetAttribute是得到属性的
孟子E章 2008-07-15
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("data.xml"));
//方法1

XmlNode xn = doc.SelectSingleNode("data");
XmlNodeList xnl = xn.ChildNodes;

foreach (XmlNode xe in xnl)
{
string aa = xe.InnerText;


}

//方法2
XmlNode xn2 = doc.SelectSingleNode("data");
string a = xn2.SelectSingleNode("kmobile").InnerText;
string b = xn2.SelectSingleNode("id").InnerText;
string c = xn2.SelectSingleNode("kdata").InnerText;
string f = xn2.SelectSingleNode("kdate").InnerText;
ericzhangbo1982111 2008-07-15
  • 打赏
  • 举报
回复
GetAttribute 取得的属性
而你需要的是innertext
dayizhixiaotutu 2008-07-15
  • 打赏
  • 举报
回复
string a = xnf .innerText
Martin-月影 2008-07-15
  • 打赏
  • 举报
回复
GetAttribute 好像是读形如<ID name="myid" isShow="true">XXXXXX</ID>的name的
宝_爸 2008-07-15
  • 打赏
  • 举报
回复
两个mark之间并不是属性而是inner text
例如<id>asdfsdf </id>
XmlElement xe = (XmlElement)xnf;
xe.InnerText就是asdfsdf

我修改了一下程序:
private void button1_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"..\..\test.xml");


XmlNode xn = doc.SelectSingleNode("data");
XmlNodeList xnl = xn.ChildNodes;

foreach (XmlNode xnf in xnl)
{
XmlElement xe = (XmlElement)xnf;
Console.WriteLine(xe.Name + ":" + xe.InnerText);

}

}

输出是:

id:asdfsdf
kmobile:aa
kdate:fffff
kfrom:58.3
kdata:Cfffff?
宝_爸 2008-07-15
  • 打赏
  • 举报
回复
两个mark之间并不是属性而是inner text
例如<id>asdfsdf </id>
XmlElement xe = (XmlElement)xnf;
xe.InnerText就是asdfsdf

我修改了一下程序:
private void button1_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"..\..\test.xml");


XmlNode xn = doc.SelectSingleNode("data");
XmlNodeList xnl = xn.ChildNodes;

foreach (XmlNode xnf in xnl)
{
XmlElement xe = (XmlElement)xnf;
Console.WriteLine(xe.Name + ":" + xe.InnerText);

}

}

输出是:

id:asdfsdf
kmobile:aa
kdate:fffff
kfrom:58.3
kdata:Cfffff?
宝_爸 2008-07-15
  • 打赏
  • 举报
回复
两个mark之间并不是属性而是inner text
例如<id>asdfsdf </id>
XmlElement xe = (XmlElement)xnf;
xe.InnerText就是asdfsdf

我修改了一下程序:
private void button1_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"..\..\test.xml");


XmlNode xn = doc.SelectSingleNode("data");
XmlNodeList xnl = xn.ChildNodes;

foreach (XmlNode xnf in xnl)
{
XmlElement xe = (XmlElement)xnf;
Console.WriteLine(xe.Name + ":" + xe.InnerText);

}

}

输出是:

id:asdfsdf
kmobile:aa
kdate:fffff
kfrom:58.3
kdata:Cfffff?

110,534

社区成员

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

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

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