求高手指点,加载xml文件数据不成功?跪求!!!

wsang_web 2015-01-07 03:13:10
环境:.NET Frameword 4.5.2,文件路径都没有问题,我把引入的3个XML文件直接加的包含文件中就有值了,跪求高手指点


C#
void LoadXml (string xmlFile)
{
int cnt = 0;
XmlDocument xmlDoc = new XmlDocment ();
xmlDoc.Load (xmlFile);
XmlElement rootElement = xmlDoc.DocumentElement;
XmlNodeList nodelist = rootElement.GetElementsByTagName ("Key");
cnt = nodelist.Count; //获得不到数据,什么原因????
}

XML
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE CONTROLPROP [
<!ENTITY ControlProp SYSTEM "ControlProp.xml">
<!ENTITY userProp SYSTEM "UserProp.xml">
<!ENTITY codeProp SYSTEM "CodeProp.xml">
]>
<CONTROLPROP>
&codeProp;
&ControlProp;
&userProp;
</CONTROLPROP>
...全文
873 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mahua_1915784404 2015-01-08
  • 打赏
  • 举报
回复
加载XML文件数据显示 //引入命名空间 using System.Xml; //创建XmlDocment类实例加载XML文件数据 protected void Page_Load(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("LeaveWord.xml")); bindXml(); }//codego.net/tags/11/1/ //自定义方法将XML文件数据绑定到XmlDataSourc public void bindXml() { XmlDocument mydoc = this.XmlDataSourceLW.GetXmlDocument(); }
winnowc 2015-01-08
  • 打赏
  • 举报
回复
我试着重现了你的问题。参考 http://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.xmlresolver(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/System.Xml.XmlReader.Create(v=vs.110).aspx 从4.5.2开始,XmlResolver的默认值从XmlUrlResolver改成了null,这样子就不会自动解析dtd里面的引用了(这估计算是一个安全漏洞)。需要自己指定下XmlResolver:

using (var xr = XmlReader.Create(xmlFile, new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse, XmlResolver = new XmlUrlResolver() }))
    xmlDoc.Load(xr);
Pandorym 2015-01-07
  • 打赏
  • 举报
回复
GetElementsByTagName(String)只在當前節點下尋找。 對你的程式而言,當前節點是rootElement。
Pandorym 2015-01-07
  • 打赏
  • 举报
回复
引用 10 楼 wsang_web 的回复:
ControlProp.xml 、UserProp.xml、CodeProp.xml 里面的标签<key>
XML是標記語言,不會為你加載其他文件的。 如果需要它自動載入其他XML文件,你可以更改你的LoadXml (string xmlFile)函式。 大概就是將「引用標籤」中指向的XML文件讀到一個節點中,然後將節點添加到當前節點下。
wsang_web 2015-01-07
  • 打赏
  • 举报
回复
引用 9 楼 u013291805 的回复:
[quote=引用 8 楼 wsang_web 的回复:] 被引入的xml文件中的标签不被读出来???
什麼是「被引入的xml文件中的标签」?[/quote] ControlProp.xml 、UserProp.xml、CodeProp.xml 里面的标签<key>
Pandorym 2015-01-07
  • 打赏
  • 举报
回复
引用 8 楼 wsang_web 的回复:
被引入的xml文件中的标签不被读出来???
什麼是「被引入的xml文件中的标签」?
wsang_web 2015-01-07
  • 打赏
  • 举报
回复
引用 7 楼 u013291805 的回复:
自己弄個標籤唄。你認真了解過Xml嗎? :)
static void Main(string[] args)
{
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"XML.Xml");
    XmlNodeList nodelist = xmlDoc.DocumentElement.GetElementsByTagName("XmlFilename");
    for (var index = 0; index < nodelist.Count; index++)
         Console.WriteLine(nodelist.Item(index).InnerText);
    Console.ReadKey();
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <XmlFilename>ControlProp.xml</XmlFilename>
  <XmlFilename>UserProp.xml</XmlFilename>
  <XmlFilename>CodeProp.xml</XmlFilename>
</resources>
被引入的xml文件中的标签不被读出来???
Pandorym 2015-01-07
  • 打赏
  • 举报
回复
自己弄個標籤唄。你認真了解過Xml嗎? :)
static void Main(string[] args)
{
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"XML.Xml");
    XmlNodeList nodelist = xmlDoc.DocumentElement.GetElementsByTagName("XmlFilename");
    for (var index = 0; index < nodelist.Count; index++)
         Console.WriteLine(nodelist.Item(index).InnerText);
    Console.ReadKey();
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <XmlFilename>ControlProp.xml</XmlFilename>
  <XmlFilename>UserProp.xml</XmlFilename>
  <XmlFilename>CodeProp.xml</XmlFilename>
</resources>
wsang_web 2015-01-07
  • 打赏
  • 举报
回复
引用 5 楼 gzxpg 的回复:
rootElement.GetElementsByTagName ("Key");没看到你的key标签
有的,在引入的xml文件中。 在之前版本都没问题,升级到:.NET Frameword 4.5.2就读不到了,不知道怎么解决?
害羞的大叔 2015-01-07
  • 打赏
  • 举报
回复
rootElement.GetElementsByTagName ("Key");没看到你的key标签
wsang_web 2015-01-07
  • 打赏
  • 举报
回复
引用 2 楼 Z65443344 的回复:
那个[ ] 是什么玩意,自己创造的?
<!DOCTYPE 根元素 [元素声明]> http://www.w3school.com.cn/dtd/dtd_intro.asp
wsang_web 2015-01-07
  • 打赏
  • 举报
回复
那xml文件引入xml文件应该怎么写?谢谢
於黾 2015-01-07
  • 打赏
  • 举报
回复
那个[ ] 是什么玩意,自己创造的?
wirner 2015-01-07
  • 打赏
  • 举报
回复
把你的xml,拷贝到文件中,用IE都打不开,你感觉你的这个xml不符合规范。。

110,533

社区成员

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

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

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