я пытаюсь прочитать из XML-документа через файлы, сгенерированные CodeSynthesis XSD (.cxx / .hxx) и получить этот код:
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, находятся в ограничительном перечислении? или я что-то не так понимаю?
Превращаю мои комментарии в ответ
Обе проблемы, которые вы перечисляете, кажутся проблемами с самим файлом XML, а не с кодом синтаксического анализа. Первый выглядит как ссылка на сущность &D
без соответствия ;
или что-то.
Второй, вероятно, означает, что ограничение относится к содержание из Item
элемент (текст между его открытием <Item>
и закрытие </Item>
теги), а не к его атрибуту с именем value
).
Других решений пока нет …