在Perl中使用LibXML检查XML include语句中文件的其他目录
我正在使用加载模式。该模式有多个include语句 问题是它引用的文件位于不同的根目录中,这也是在我的Perl代码中定义的 有没有办法让在Perl中使用LibXML检查XML include语句中文件的其他目录,xml,perl,libxml2,Xml,Perl,Libxml2,我正在使用加载模式。该模式有多个include语句 问题是它引用的文件位于不同的根目录中,这也是在我的Perl代码中定义的 有没有办法让XML::LibXML检查这个根目录中的include语句中的文件 例如,假设XML文件的当前工作目录是C:\test\test2,并且XML文件具有以下语句: <xs:include schemaLocation="testFile.xsd" /> 它给出了一个错误,因为它无法找到testFile.xsd 有没有办法在其他目录中查找testFil
XML::LibXML
检查这个根目录中的include语句中的文件
例如,假设XML文件的当前工作目录是C:\test\test2
,并且XML文件具有以下语句:
<xs:include schemaLocation="testFile.xsd" />
它给出了一个错误,因为它无法找到testFile.xsd
有没有办法在其他目录中查找
testFile.xsd
?由于信息太少,答案必须是否定的
如果XML被指定为允许搜索XSD文件,那么当格式错误的数据启动internet范围的匹配文件搜索时,所有的地狱都将崩溃
由于您使用的是Windows,我建议您可以使用Windows实现所需的功能
你应该看一看信息非常少的,答案应该是否定的 如果XML被指定为允许搜索XSD文件,那么当格式错误的数据启动internet范围的匹配文件搜索时,所有的地狱都将崩溃 由于您使用的是Windows,我建议您可以使用Windows实现所需的功能
您应该了解一下XML::LibXML是基于libxml2的,因此可以使用。您必须创建包含条目的目录文件,例如:
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<uri name="foo.xsd" uri="file:///c:/yourpath/foo.xsd"/>
</catalog>
使用
$parser->Load_catalog($catalog_file)加载它代码>XML::LibXML基于libxml2,因此可以使用。您必须创建包含条目的目录文件,例如:
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<uri name="foo.xsd" uri="file:///c:/yourpath/foo.xsd"/>
</catalog>
使用$parser->Load_catalog($catalog_file)加载它
您可以使用截获从XML::LibXML
到文件系统和网络的每次访问。您所要做的就是实现并注册四个回调函数。看一看这张照片
在您的情况下,您可以实现一个打开的处理程序来检查目录列表中的文件。您可以使用截获从XML::LibXML
到文件系统和网络的每次访问。您所要做的就是实现并注册四个回调函数。看一看这张照片
在您的情况下,您可以实现一个打开的处理程序来检查目录列表中的文件。您正在讨论的一个示例会使这个问题变得更好。@mob谢谢,我已经更新了这个问题。在选项下面,我看到了四种可能的解决方案最简单的方法是设置base\u uri
选项。@ikegami:你做到了吗?怎么做?你没有对这个问题给出一个最低限度的或者有效的演示,所以我没有什么可测试的(这也是为什么我没有把它作为答案发布的原因)。你所说的一个例子会让这个问题变得更好。@mob谢谢,我已经更新了这个问题。查看选项,我看到了四种可能的解决方案最简单的方法是设置base\u uri
选项。@ikegami:你做到了吗?怎么做?你没有对这个问题给出一个最低限度的或者有效的演示,所以我没有什么可测试的(这也是为什么我没有把它作为答案发布的原因)。谢谢,但这似乎只在LibXML的解析器函数中受支持,而不是schema函数。谢谢,但这似乎只在LibXML的解析器函数中受支持,而在schema函数中不受支持。