请教读取XML问题!

vonyee 2007-04-23 10:51:43
XML内容如下:


<?xml version="1.0" encoding="GBK" ?>
- <SPXX>
- <SP_SEND_MESSAGE ID="1">
<attribute name="COMPANY_NO" type="string">4403969912</attribute>
<attribute name="INF_CONT" type="string">成品7人工审核通过</attribute>
<attribute name="INFO_NO" type="number">51</attribute>
</SP_SEND_MESSAGE>
- <SP_SEND_MESSAGE ID="2">
<attribute name="COMPANY_NO" type="string">4403969912</attribute>
<attribute name="INF_CONT" type="string">成品8人工审核通过</attribute>
<attribute name="INFO_NO" type="number">51</attribute>
</SP_SEND_MESSAGE>
</SPXX>

问题是,如何读取这段XML内容,并写入DataSet,格式是表名为SP_SEND_MESSAGE,三个字段COMPANY_NO、INF_CONT、INFO_NO,记录条数为3?

我用ReadXml每次得出的都是一张怪表,字段为name,type,attribute和attribute name

谢谢了
...全文
288 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vonyee 2007-04-23
  • 打赏
  • 举报
回复
现在XSD文件缺失,有没有办法能自己写一个Schema出来,按照指定的格式!

不好意思啊,XML处理比较菜!
Jinwmmail 2007-04-23
  • 打赏
  • 举报
回复

先读模式文件,再读XML件, 示例如下:

DataSet ds=new DataSet();
public void ReadServer()
{
try
{
string CurrDirectory = AppDomain.CurrentDomain.BaseDirectory;
string fileName;

fileName = CurrDirectory + "Server\\ApplicationServer.xsd";
ds.ReadXmlSchema(fileName);
ds.Clear();

fileName = CurrDirectory + "Server\\ApplicationServer.xml";
ds.ReadXml(fileName);

}
catch (Exception ex)
{
Common.clsFunction.ShowMessageBoxError(this, ex.Message);
}
}
vonyee 2007-04-23
  • 打赏
  • 举报
回复
右上角有个“提问”阿!
liuyingting110 2007-04-23
  • 打赏
  • 举报
回复
大哥们怎么发贴子啊.!
我找了好久都没有找到. 有谁有帮助我吗
我有问题要向大家请问.?
vonyee 2007-04-23
  • 打赏
  • 举报
回复
to 飞雨,你的意思是先读出来,然后再操作DataTable入库得到想要的格式是么?

可是这样代码量相对较大,而且失去了XML直接入库的初衷阿!

有没有更好的方法阿?谢谢了
飘_飘 2007-04-23
  • 打赏
  • 举报
回复
可以先取到datatable里,再来控制
yubin878280 2007-04-23
  • 打赏
  • 举报
回复
net 的DateSet中的DataTable的ReadXml()方法可以读xml文件
但是要保证数据表和xml文件的数据格式一致
msdn有详细的描述,可以自己去读一下(我读后觉得很好)
飘_飘 2007-04-23
  • 打赏
  • 举报
回复
这是我取tables[1] 取到的结果
name type attribute_Text S P_SEND_MESSAGE_Id
COMPANY_NO string 4403969912 0
INF_CONT string 成品7人工审核通过 0
INFO_NO number 51 0
COMPANY_NO string 4403969912 1
INF_CONT string 成品8人工审核通过 1
INFO_NO number 51 1
-----------------------------------------------------------------
你可以根据需要提取数据就可以 ,没有不可能的
vonyee 2007-04-23
  • 打赏
  • 举报
回复
没错,是两张表,第一张是<SPXX>和<ID>,第二张name,type,attribute和attribute name
不知道怎么回事!

如何才能读成这种格式:

COMPANY_NO INF_CONT INFO_NO

4403969912 成品7人工审核通过 51
4403969912 成品8人工审核通过 51
4403969912 成品9人工审核通过 51
飘_飘 2007-04-23
  • 打赏
  • 举报
回复
因为你的XML有多张表,所以用DATASET存放的时候也是多张表
通常tables[0]是存放你所有下级表的一张检索表 tables[1],[2]。。。。。是你下面要引用到的子表
vonyee 2007-04-23
  • 打赏
  • 举报
回复
急,在线等!
bluesky1979 2007-04-23
  • 打赏
  • 举报
回复
测试通过!
bluesky1979 2007-04-23
  • 打赏
  • 举报
回复
换一种文件格式吧!建议按照如下的格式:
<?xml version="1.0" encoding="GBK" ?>
<SPXX>
<SP_SEND_MESSAGE>
<COMPANY_NO>4403969912</COMPANY_NO>
<INF_CONT>成品7人工审核通过</INF_CONT>
<INFO_NO>51</INFO_NO>5
</SP_SEND_MESSAGE>
<SP_SEND_MESSAGE>
<COMPANY_NO>4403969912</COMPANY_NO>
<INF_CONT>成品8人工审核通过</INF_CONT>
<INFO_NO>51</INFO_NO>5
</SP_SEND_MESSAGE>
</SPXX>
vonyee 2007-04-23
  • 打赏
  • 举报
回复
hello,有人在么?

111,120

社区成员

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

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

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