Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ libxml2.7.8/libxml++;2.35和DTD验证中的变更_C++_Fedora_Libxml2_Fedora16 - Fatal编程技术网

C++ libxml2.7.8/libxml++;2.35和DTD验证中的变更

C++ libxml2.7.8/libxml++;2.35和DTD验证中的变更,c++,fedora,libxml2,fedora16,C++,Fedora,Libxml2,Fedora16,最近,我的Fedora 16自动将libxml2从以前的版本升级到最新的rpm libxml2-2.7.8-8.fc16.i686,dtd验证突然开始抱怨dtd文件中缺少声明。在此升级之前,一切正常。当然,当我禁用验证时,它也可以正常工作,但这不是我的想法。我没有直接使用libxml2,实际上我使用libxml++这是libxml2的包装器 我试图搜索libxml2代码中可能导致此问题的一些更改,但libxml2站点和Fedora站点上最近对此包的更改没有提到DTD代码中的任何更改(在最近的版本

最近,我的Fedora 16自动将libxml2从以前的版本升级到最新的rpm libxml2-2.7.8-8.fc16.i686,dtd验证突然开始抱怨dtd文件中缺少声明。在此升级之前,一切正常。当然,当我禁用验证时,它也可以正常工作,但这不是我的想法。我没有直接使用libxml2,实际上我使用libxml++这是libxml2的包装器

我试图搜索libxml2代码中可能导致此问题的一些更改,但libxml2站点和Fedora站点上最近对此包的更改没有提到DTD代码中的任何更改(在最近的版本中)

下面的xml消息突然不再有效:

<?xml version="1.0"?><!DOCTYPE MYAPP SYSTEM "myapp.dtd"><MYAPP><Command type="Connect"/></MYAPP>
下面是我使用的myapp.dtd中的一个(剥离)片段:

<!ELEMENT MYAPP (Command|Result)>
<!ELEMENT Command (Parameters?)>
<!ELEMENT Parameters (..a lot of other types and records..)>
<!ATTLIST Command type (None|
                    Connect|
                    Disconnect
                    ) "None">

任何人都有一些关于什么可能会突然导致这种情况的指针,任何人都有这个版本中更改的指针/链接。这是已知的虫子吗,有什么线索吗

正如我建议重新编译(最新版本)libxml2,并且没有任何更改,我还重新编译了最新版本的libxml++(2.35-3),它现在可以很好地打印错误的行号和列,但这就是所有更改。解析器仍然不接受我的(以前接受的)xml文件/消息。

但我使用的libxml 2.7.8(在Windows上)会正确验证您的文件。没有消息。首先,它抱怨dtd文件第三行的
,所以我需要删除该行。现在它给出了一个干净的输出

也许你的自动升级真的把图书馆搞砸了。如果您从源代码处编译2.7.8,它将被放入
/usr/local
,并将覆盖您当前的安装。然后你可以再试一次。我不知道你如何修复现有的安装。无论如何,2.7.8版本不对您所遇到的错误负责

我的测试命令行:
xmllint ikku.xml-dtdvalid


快速思考:可能您的解析器考虑了另一个dtd文件,因为存在一些
catalog
问题。尝试更改dtd文件名。

好主意!我将获得源代码并编译它,我想我将立即获得最新版本,我看到它们现在是2.9版。我拿到结果后再给你。谢谢大家!太糟糕了,我尝试了最新的libxml2和libxml++,但没有任何积极的结果?也许你可以用另一种方式访问libxml,这就是线索。不,使用xmllint一切都很好。我也更新了我的问题,我现在的主要嫌疑犯是LIbxML++,我在代码中实际使用的LIXXML2的C++包装器。
<!ELEMENT MYAPP (Command|Result)>
<!ELEMENT Command (Parameters?)>
<!ELEMENT Parameters (..a lot of other types and records..)>
<!ATTLIST Command type (None|
                    Connect|
                    Disconnect
                    ) "None">