在加载一个XML文件时候,文件内容如下:<?xml version="1.0" encoding="utf-16"?>
<!DOCTYPE NewsML PUBLIC "urn:newsml:iptc.org:20001006:NewsMLv1.0.dtd:1" "../DTD/NewsMLv1.0.dtd" [
<!ENTITY % InContent SYSTEM "../DTD/InContentv1.0.dtd">
<!ENTITY % Kddata SYSTEM "../DHDTD/KdDHKgMLv1.0.dtd">
%InContent;%Kddata;
]>
<NewsML>
……
</NewsML>其中涉及到很多DTD,当本地没有这些DTD文件时候,就加载不成功并发出异常。
有没有什么办法,让加载不去检查这些DTD文件?因为我要的只是XML文件中一些Value。谢谢

解决方案 »

  1.   

    就是说现在因为没有那些DTD文件,我不能成功加载XML文件~怎么样能解决这个问题?
      

  2.   

    你用什么方式加载的?你手动把几句标识DTD文件的说明去掉吧,然后正常打开xml,这样可以嘛?
      

  3.   

    XmlDocument xmlDoc = new XmlDocument();
    StreamReader sReader = new StreamReader(filePath, Encoding.Unicode);
    xmlDoc.Load(sReader);我是这样加载的。
    如果我删除那几句的话,加载就可以成功呀。
    但是我不能每个XML文件都打开删除一下吧?
    有什么其他加载方法吗?
      

  4.   

    可以先用二进制读取,删除那些DTD,然后保存,
    再用xml读取。
      

  5.   

    我还是有点疑问
    你是不是说如果"<!ENTITY % InContent SYSTEM "../DTD/InContentv1.0.dtd"> 
    <!ENTITY % Kddata SYSTEM "../DHDTD/KdDHKgMLv1.0.dtd"> "只要出现了.dtd的就没办法
    是否说如果是
    "<!ENTITY % InContent SYSTEM> "
    <!ENTITY % Kddata SYSTEM >"这样的话就是可以的?
      

  6.   

    那你就搞几个同名的空的dtd文件行嘛?