【发布时间】:2013-06-03 07:55:26
【问题描述】:
我尝试通过 CodeSynthesis XSD 生成的文件 (.cxx/.hxx) 从 XML 文档中读取并获得以下代码:
1-> char* xmlFile = "C:\\Work\\MPRawDataExample.xml";
2-> auto_ptr<MPRawDataFile> f = MPRawDataFile_(xmlFile);
3-> cout << f->MPRawDataFileMeta().PatientID() << endl;
现在在第 2 行出现以下错误:
unterminated entity reference "D" 从xsd::cxx::tree::error_handler<C> 抛出
该文件确实存在,还检查了this,但没有帮助
也许有人可以解决这个问题或如何从 XML 文件中读取数据?
-> 已解决。 XSD 文件未在 xml 文件中正确引用,但现在如下:
更新:
XML 文件中的错误部分:
<AdditionalInformation>
<Info name="Ag" value="225.0/220.5"></Info>
<Info name="Vel" value="24.0/22.1"></Info>
<Info name="CC" value="0.999"></Info>
<Info name="AUC" value="1026/1159"></Info>
<Info name="Abbr. from mean" value="1.987"></Info>
<Info name="Base" value="1484/1501"></Info>
<Info name="End" value="1787/1795"></Info>
</AdditionalInformation>
来自 xsd 的限制:
<xs:simpleType name="ST_Info">
<xs:restriction base="xs:string">
<xs:enumeration value="0.999"/>
<xs:enumeration value="1.987"/>
<xs:enumeration value="1026/1159"/>
<xs:enumeration value="1484/1501"/>
<xs:enumeration value="1787/1795"/>
<xs:enumeration value="225.0/220.5 "/>
<xs:enumeration value="24.0/22.1"/>
</xs:restriction>
</xs:simpleType>
对于每个<Info>,现在我得到错误value "" not in enumeration
但是 XML 中的值在限制枚举中?还是我误解了什么?
【问题讨论】:
-
它报告的错误是在 XML 文件本身中 - 里面写了类似
&D的内容,但没有终止;。可以出示文件吗? -
没有想过这个。 .xsd 文件没有正确引用。但现在我遇到了下一个错误,请参阅编辑后的帖子
-
我又猜想是坏的 XML 文件。我不知道 XSD,但我猜元素的 contents 受枚举限制,而不是其属性
value的值。 IOW,应该是<Info>225.0/220.5</Info>。 -
您可能还想重新标记并重新表述您的问题。您似乎在编写 XML 以匹配设定的条件时遇到问题,而不是使用 C++ 代码来解析 XML。
-
感谢您的建议,已重新制定。我不明白为什么他抱怨即使有完全相同的价值观,没有意义
标签: c++ compiler-errors xsd xerces codesynthesis