【鸡毛信】C#读XML问题

TzSword 2011-01-17 11:11:57
普通的XML 和 带有命名空间的XML 都可以读取

可突然发现有一种XML 不带声明的 ⊙﹏⊙b汗

没有

<?xml version= "1.0 " encoding= "gb2312 "?>



文件类似这个样子

//myBook.xml
<bookstore>
<book genre= "fantasy " ISBN= "2-3631-4 ">
<title> Oberon 's Legacy </title>
<author> Corets, Eva </author>
<price> 5.95 </price>
</book>
</bookstore>




String pathXml=@"d:\xml\myBook.xml";
XmlDocument xml = new XmlDocument();
//这里怎么写
xml.Load(pathXml);
...全文
387 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
TzSword 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 paddypy 的回复:]
没有那个不影响的,还可以尝试一下System.Xml.Linq里面的XDocument去读取,也不错
如果是文件,用XDocument xDoc = XDocument.Load(@"c:\test.xml");
如果是String,那么直接 XDocument xDoc = XDocument.Parse(xmlStr);
如果有命名空间 XNamespace tns = "http://……
[/Quote]
谢谢 我试试
TzSword 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 dayou123123 的回复:]
把代码 全部贴出来... 还有把这个东西加上看出不出错..
<?xml version= "1.0 " encoding= "gb2312 "?>


XmlDocument xml = new XmlDocument();
xml.Load(@"路径");
XmlNode node =xml.SelectSingleNode("aa/b");


……
[/Quote]
加上申明就可以了 但去掉申明就报错。。。。郁闷 又不能改原文件
TzSword 2011-01-18
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 jiangpinhe 的回复:]
请问鸡毛信是啥意思?
[/Quote]

鸡毛信
你小时候肯定没看 哈哈
TzSword 2011-01-17
  • 打赏
  • 举报
回复
pathXMl是传过来的参数
TzSword 2011-01-17
  • 打赏
  • 举报
回复
rczjp 2011-01-17
  • 打赏
  • 举报
回复
不会啊,我这边OK
TzSword 2011-01-17
  • 打赏
  • 举报
回复

XmlDocument xml = new XmlDocument();
string newXML = System.IO.File.ReadAllText(pathXml, Encoding.UTF8);
xml.LoadXml(newXML);

错误同样的 纠结。。。。。。。
TzSword 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wuyq11 的回复:]
文件操作方式
File.ReadAllText
再加<?xml version= "1.0 " encoding= "gb2312 "?>
[/Quote]
不行 不能改变原来的XML
wuyq11 2011-01-17
  • 打赏
  • 举报
回复
文件操作方式
File.ReadAllText
再加<?xml version= "1.0 " encoding= "gb2312 "?>

rczjp 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 findcaiyzh 的回复:]
那就先用File.ReadAllText读取,再用LoadXml :)
[/Quote]确实,使用这个OK
string newXML = System.IO.File.ReadAllText(xmlPath, Encoding.UTF8);
xmlDoc.LoadXml(newXML);
rczjp 2011-01-17
  • 打赏
  • 举报
回复
使用XmlDocument 这个需要那个申明,我测试了下
XDocment有没有都没关系
宝_爸 2011-01-17
  • 打赏
  • 举报
回复
那就先用File.ReadAllText读取,再用LoadXml :)
rczjp 2011-01-17
  • 打赏
  • 举报
回复
可以使用 string xmlPath = @"D:\test.xml";
XDocument xmlDoc = XDocument.Load(xmlPath);
来做,操作节点更方便
TzSword 2011-01-17
  • 打赏
  • 举报
回复
pathXml=@"d:\xml\myBook.xml";
TzSword 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 rczjp 的回复:]
LOAD需要<?xml version="1.0" encoding="utf-8"?>申明
loadxml就不要
[/Quote]
用loadXml也不行 还是报错
        XmlDocument xml = new XmlDocument();
xml.LoadXml(pathXml);//根级别上的数据无效。 行 1,位置 1。
rczjp 2011-01-17
  • 打赏
  • 举报
回复
LOAD需要<?xml version="1.0" encoding="utf-8"?>申明
loadxml就不要
TzSword 2011-01-17
  • 打赏
  • 举报
回复
这个错误 我搜索过了 还是无法解决
TzSword 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
string xml = @"<bookstore> 。。。";
XElement xmlPage = XElement.Parse(xml);
var query = xmlPage.Descendants("").Where(x=>x.Element("").Value)
[/Quote]
这个不可以 因为xml的内容不一定的
TzSword 2011-01-17
  • 打赏
  • 举报
回复
异常 “根级别上的数据无效”
kang0205 2011-01-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zetee 的回复:]
String pathXml=@"d:\xml\myBook.xml";
XmlDocument xml = new XmlDocument();
doc.LoadXml( System.IO.File.ReadAllText(pathXml,Encoding.UTF8));
[/Quote]
就是这样
加载更多回复(17)

110,534

社区成员

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

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

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