C++ XSD:值不在枚举中
我尝试通过CodeSynthesis XSD生成的文件(.cxx/.hxx)读取XML文档,并获得以下代码:C++ XSD:值不在枚举中,c++,compiler-errors,xsd,xerces,codesynthesis,C++,Compiler Errors,Xsd,Xerces,Codesynthesis,我尝试通过CodeSynthesis XSD生成的文件(.cxx/.hxx)读取XML文档,并获得以下代码: 1-> char* xmlFile = "C:\\Work\\MPRawDataExample.xml"; 2-> auto_ptr<MPRawDataFile> f = MPRawDataFile_(xmlFile); 3-> cout << f->MPRawDataFileMeta().PatientID() <&l
1-> char* xmlFile = "C:\\Work\\MPRawDataExample.xml";
2-> auto_ptr<MPRawDataFile> f = MPRawDataFile_(xmlFile);
3-> cout << f->MPRawDataFileMeta().PatientID() << endl;
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>
对于每个
现在,我得到的错误值“”不在枚举中
但是XML中的值在限制枚举中?还是我误解了什么?把我的评论变成了答案
您列出的两个问题似乎都是XML文件本身的问题,而不是解析代码的问题。第一个看起来像是一个实体引用&D
,没有匹配的代码>或者什么的
第二个可能意味着该限制适用于项
元素的内容(其开头
和结尾
标记之间的文本),它的属性名为value
)。它报告的错误在XML文件本身中-其中写入了类似&D
的内容,但没有终止代码>。你能把文件拿出来吗?我没想过。未正确引用.xsd文件。但现在我得到了下一个错误,请看编辑后的帖子,我猜XML文件又坏了。我不知道XSD,但我猜元素的内容受枚举的限制,而不是它的属性value
的值。注意,它应该是225.0/220.5
。您可能还需要重新标记并重新表述您的问题。看来,编写XML以匹配一个设置标准,而不是用C++代码解析XML.THX的建议,已经重新编写了。我不明白他为什么抱怨,即使有完全相同的价值观,也没有道理
<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>