有一个xml文件,基本内容为:<?xml version="1.0"?>
<!DOCTYPE doc SYSTEM "http://www.yaofool.com/xml/kcb.dtd">
<bootDocNode>
<ChileNode1>结点内容</ChileNode1>
</bootDocNode>
我用delphi读取的代码为:xmlDoc: IXMLDOMDocument;
Node1:IXMLDOMNode;
//////////////////////
xmlDoc:=CoDOMDocument.Create;
xmlDoc.Load('C:\test.xml');
node1:=xmldoc.selectSingleNode('/bootDocNode/ChileNode1');
if Assigned(node1) then ShowMessage(node1.Text);
问题是这样的:按上面所示的xml原样读取时,提示"xml不可用",报错;当把xml文件中"<!DOCTYPE doc SYSTEM "http://www.yaofool.com/xml/kcb.dtd">"去掉,则读取正常.因此,报错是由xml中的注释部分引起的.但我在处理这个xml文件时,按开发要求不能去掉这块注释,请和位高手指教,使用我上文的代码如何解决?谢谢谢谢!
<!DOCTYPE doc SYSTEM "http://www.yaofool.com/xml/kcb.dtd">
<bootDocNode>
<ChileNode1>结点内容</ChileNode1>
</bootDocNode>
我用delphi读取的代码为:xmlDoc: IXMLDOMDocument;
Node1:IXMLDOMNode;
//////////////////////
xmlDoc:=CoDOMDocument.Create;
xmlDoc.Load('C:\test.xml');
node1:=xmldoc.selectSingleNode('/bootDocNode/ChileNode1');
if Assigned(node1) then ShowMessage(node1.Text);
问题是这样的:按上面所示的xml原样读取时,提示"xml不可用",报错;当把xml文件中"<!DOCTYPE doc SYSTEM "http://www.yaofool.com/xml/kcb.dtd">"去掉,则读取正常.因此,报错是由xml中的注释部分引起的.但我在处理这个xml文件时,按开发要求不能去掉这块注释,请和位高手指教,使用我上文的代码如何解决?谢谢谢谢!
解决方案 »
- 关于sqlite3按日期排序的问题
- 还你1001分
- 求教一种算法 如何删除一个父结点 同时删除他下面所有的子结点 在线等代码 立刻给分
- odbc数据源管理器中,驱动程序列出了系统所安装的ODBC驱动程序,请问,如何用手工修改注册表增加、或删除某个驱动程序
- 请教各位!我在delphi7里调试时,用单步进行调试,程序就运行了,没有进入我的代码!这时什么回事呀!
- 如果要将DELPHI程序员分类,大家认为应该如何分类呢?分类依据是什么?
- 如何实现象access中的压缩和修复数据库功能-既pack功能
- 请教一个关于使用installshield的问题:
- 急急急急 请问各位师兄如何在报表组件中
- 如何动态控制stringgrid的行数,以及如何得到鼠标点击的行号
- 请教关于DelphiOpenGL
- [求助]如何设置代码编辑器的大小和位置?
最好的方法是:
改 "<!DOCTYPE doc SYSTEM "http://www.yaofool.com/xml/kcb.dtd">"
为: "<!DOCTYPE doc SYSTEM "kcb.dtd">"
然后将这个kcb.dtd下载(从http://www.yaofool.com/xml/kcb.dtd上)到和XML 文件相同路径下面,这样就能解析了或者你也可以直接将"<!DOCTYPE doc SYSTEM "http://www.yaofool.com/xml/kcb.dtd">"删除,这样就没有规定格式文件了,就直接可以解析,但是缺点是无法实现格式话的XML文档
你可以用从TXMLDOCUMENT中取到对应的MSXML DOM对象。