关于XML的操作,急。。。。。。。。。。。。。,谢谢了

jintao0405 2011-01-14 11:22:44
System.IO.StringReader StrStream = new System.IO.StringReader("<NewDataSet><Table><Name>第一季度</Name><count>20</count></Table><Table><Name>第二季度</Name><count>120</count></Table><Table><Name>第三季度</Name><count>79</count></Table><Table><Name>第四季度</Name><count>45</count></Table></NewDataSet>");
DataSet ds2 = new DataSet();
XmlTextReader Xmlrdr = new XmlTextReader(StrStream); ;
ds2.ReadXml(Xmlrdr);


帮忙看下这段代码哪里有问题,
我调试的时候 Xmlrdr为none
ds2.ReadXml(Xmlr) 报错 : 根级别上的数据无效。 第 1 行,位置 1。

...全文
188 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
第一种方法:直接<?xml version= "1.0 " encoding="GB2312 "?>

第二种方法,你把数据放到.xml当中,然后用流读出xml当中的数据,这样的话,应该没有问题,而且你这样写,不显得乱吗!~
ziheng5512 2011-01-14
  • 打赏
  • 举报
回复
将这个家在文件头部,<?xml version="1.0" encoding="UTF-8"?>
巧小小丫 2011-01-14
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="UTF-8"?>
wuyq11 2011-01-14
  • 打赏
  • 举报
回复
如果直接读取报错的话,可能是你的XML文件有问题
<?xml version= "1.0 " encoding= "GB2312 "?>
空格
newdigitime 2011-01-14
  • 打赏
  • 举报
回复
加一句:
<?xml version="1.0" ?>
幸运的意外 2011-01-14
  • 打赏
  • 举报
回复
米有元素标记呀<?xml version="1.0" ?>
wangbin1986 2011-01-14
  • 打赏
  • 举报
回复
readxml方法要读xml文件
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
辛苦各位了,为什么产生这个未知字符还没弄清楚,先把他转化掉再说,以后再看,因为在其他项目中用的同样的函数没有产生未知字符,也不知道啥原因,以后再看,结贴了。
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 net_lover 的回复:]
XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
最好是XmlWt = new XmlTextWriter(ms, Encoding.UTF8)
OR
GB2312

[/Quote]

换了,也不行,依然有未知字符。
孟子E章 2011-01-14
  • 打赏
  • 举报
回复
XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
最好是XmlWt = new XmlTextWriter(ms, Encoding.UTF8)
OR
GB2312
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 wdxgdiy 的回复:]
是不是和编码有关系
[/Quote]

我也怀疑,但是换其他编码返回的都是乱码。更不行。
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 net_lover 的回复:]
那就要看xml是怎么生成的啊/
你目前的代码里面没有反应出来啊
[/Quote]

public static string CDataToXml(DataTable dt)
{
if (dt != null)
{
MemoryStream ms = null;
XmlTextWriter XmlWt = null;
try
{
ms = new MemoryStream();
//根据ms实例化XmlWt
XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
//获取ds中的数据
dt.WriteXml(XmlWt);
int count = (int)ms.Length;
byte[] temp = new byte[count];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(temp, 0, count);
//返回Unicode编码的文本
UnicodeEncoding ucode = new UnicodeEncoding();
string returnValue = ucode.GetString(temp).Trim();
return returnValue;
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
//释放资源
if (XmlWt != null)
{
XmlWt.Close();
ms.Close();
ms.Dispose();
}
}
}
else
{
return "";
}
}


就这个函数啊
wdxgdiy 2011-01-14
  • 打赏
  • 举报
回复
是不是和编码有关系
孟子E章 2011-01-14
  • 打赏
  • 举报
回复
那就要看xml是怎么生成的啊/
你目前的代码里面没有反应出来啊
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 net_lover 的回复:]
XmlDocument doc = new XmlDocument();
doc.LoadXml("<NewDataSet><Table><Name>第一季度</Name><count>20</count></Table><Table><Name>第二季度</Name><count>120</count></Table><Table><Name>第三季度</Name><count>79</cou……
[/Quote]

孟子老大,非常感谢光顾,但是现在问题不是出在这里,而是我的转化函数会生成未知字符,就是<NewDataSet>之前会有一个看不见的字符,所以解析不出来,函数见11楼,现在就想知道为什么转化会有未知字符。
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
各位兄弟,已经很清楚是传过来的XML有问题,而且问题所在也已找到,就是最开始的"<"之前有个未知字符,看不见的,现在就是想知道我用那个转化函数为什么会生成那个未知字符。
孟子E章 2011-01-14
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.LoadXml("<NewDataSet><Table><Name>第一季度</Name><count>20</count></Table><Table><Name>第二季度</Name><count>120</count></Table><Table><Name>第三季度</Name><count>79</count></Table><Table><Name>第四季度</Name><count>45</count></Table></NewDataSet>");
DataSet ds2 = new DataSet();
ds2.ReadXml(new XmlNodeReader(doc), XmlReadMode.IgnoreSchema);
纯唇Yu弄 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
如果直接读取报错的话,可能是你的XML文件有问题
<?xml version= "1.0 " encoding= "GB2312 "?>
空格
[/Quote]

++
z050301402 2011-01-14
  • 打赏
  • 举报
回复
那你就建一个强数据集嘛 自动生成一个xml 读起来也方便
jintao0405 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 z050301402 的回复:]
好像我弄错了 ds.ReadXmlSchema(Xmlrdr) 试试这个
[/Quote]

不关Read的事,在生成的时候已经是字符不对了,已经有未知字符产生了。
加载更多回复(8)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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