Как ссылаться на онлайн DTD для моего анализа XML в C # - PullRequest
0 голосов
/ 08 ноября 2011

Как я могу ссылаться на онлайн или внешнее DTD в моем XML в C #?

    string fileName = @"C:\\temp\H2009.xml";

    XmlDocument xDoc = new XmlDocument();

    xDoc.Load(fileName);

Мой DTD-файл ftp.myPartnerCompany.com / Name.ent

В этом файле .ent они определяют сущность таким образом

<!ENTITY Acaron "&#258;"> <!-- latin capital letter A with caron (breve),                                  
                                  U+0102 Latin Extended-A -->


<!ENTITY acaron "&#259;"> <!-- latin small letter a with caron (breve),                                  
                                  U+0103 Latin Extended-A -->
<!ENTITY Acedil "&#260;"> <!-- latin capital letter A with cedilla,
                                  U+0104 Latin Extended-A -->

Теперь у меня проблема, как показано ниже, поскольку я не знаю, как связать xml и .ent файл .

Ссылка на необъявленную сущность 'Акарон'. Линия 4971, позиция 21.

Заранее спасибо.

EDIT

Не забудьте упомянуть мой XML-файл, он будет таким, как показано ниже.

<?xml version='1.0' encoding='iso-8859-1'?>
<MA>
<Y07 CLID='C737467' KW='BIRANT' KW2='ESINOGLU'>
       <Y0747>B&acaron;RANT ES&acaron;NO&Gcaron;LU</Y0747>
       <Y0748>MARK KO KYI Sok Kuulu&scedil; Sit
             KA&Gcaron;ITHASDNE/&Idot;THAILAND
       </Y0748>
<Y07>
<MA>

1 Ответ

1 голос
/ 08 ноября 2011

Исходя из примеров в вашем вопросе, файл .ent, на который вы указываете, не является DTD. Нет никаких объявлений ELEMENT / ATTLIST, поэтому структура не определена. Без DTD ваш XML может быть только правильно сформированным (но это не так).

Чтобы сослаться на файл, содержащий все ваши объявления ENTITY, вам нужно использовать сущность параметра в объявлении DOCTYPE. Я не знаю C #, поэтому я не знаю точно, как бы вы это закодировали, чтобы вывод был правильным, но вот пример того, как должен выглядеть ваш вывод XML:

<!DOCTYPE MA [
<!ENTITY % ents SYSTEM "name.ent">
%ents;
]>
<MA>
  <Y07 CLID="C737467" KW="BIRANT" KW2="ESINOGLU">
    <Y0747>B&acaron;RANT ES&acaron;NO&Gcaron;LU</Y0747>
    <Y0748>MARK KO KYI Sok Kuulu&scedil; Sit KA&Gcaron;ITHASDNE/&Idot;THAILAND </Y0748>
  </Y07>
</MA>

Надеюсь, это поможет.

...