0

我尝试通过 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>

该文件确实存在那里,也检查了这个但没有帮助

也许有人对此有解决方案或如何从 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 中的值在限制枚举中?还是我误解了什么?

4

1 回答 1

1

将我的评论变成答案

您列出的两个问题似乎都是 XML 文件本身的问题,而不是解析代码的问题。第一个看起来像有一个&D没有匹配;或其他东西的实体引用。

第二个可能意味着该限制适用于元素的内容Item其开始<Item>和结束</Item>标签之间的文本),而不是其名为 的属性value)。

于 2013-06-03T11:28:00.757 回答