我试图让 xincludes 在现有系统中工作,该系统使用 xercesc 中的 XercesDOMParser 来解析来自客户端的传入 xml。我正在使用 Apache Xercesc v3.0.1,从输入流读取的传入 XML 是:
<?xml version="1.0" encoding="UTF-8"?>
<VisionServer xmlns:xi="http://www.w3.org/2001/XInclude">
<CompositeObject>
<xi:include href="testguioutput.xml" />
而 testguioutput.xml 包含
<?xml version="1.0" encoding="UTF-8"?>
<GUIOutput>
<Input>Input</Input>
<Title>IDC2_1</Title>
</GUIOutput>
现有代码使用 XercesDOMParser 周围的包装器来解析传入的 XML,并且在使用 setDoNamespaces 和 setDoXInclude 为 true 后,它尝试解析 XInclude,但我收到持久的“致命:包含失败且未找到后备元素”在文档“{0}”中”错误,无论我将 testguioutput.xml 放在目录结构中的哪个位置。
我在 Visualstudio 2008 下工作,我的工作目录是默认的,并且运行在 /project/debug 中,但是无论目标文件位于 /project/ 还是 /project/debug/ 中,包含都会失败。
我能够使用 Xerces 应用程序中包含的 XInclude.exe 示例应用程序来扩展 xinclude 标记。为此,我使用上面的文件创建了两个文件:
测试1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<VisionServer xmlns:xi="http://www.w3.org/2001/XInclude">
<CompositeObject>
<xi:include href="test2.xml"/>
</CompositeObject>
</VisionServer>
测试2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<GUIOutput>
<Input>Input</Input>
<Title>IDC2_1</Title>
</GUIOutput>
我在命令行执行:
“XInclude.exe test1.xml test1_expanded.xml”不带引号。
生成的 test1_expanded.xml 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<VisionServer xmlns="" xmlns:xi="http://www.w3.org/2001/XInclude">
<CompositeObject>
<GUIOutput xml:base="test2.xml">
<Input>Input</Input>
<Title>IDC2_1</Title>
</GUIOutput>
</CompositeObject>
</VisionServer>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)