TinyXML lib не может правильно прочитать '&'

У меня есть XML-файл с некоторыми строками, такими как следующие:

<rule pat="&&&&&&&&&&&&&&&(?<B>B) ?(?<AND>&) ?(?<E>E)">

Я использую библиотеку TinyXML в C++ для разбора этого XML-файла, но когда я пытаюсь получить атрибут 'pat' таких строк, TinyXML просто игнорирует любое вхождение символа &, То есть результат, читаемый TinyXML, выглядит следующим образом:

(?<B>B) ?(?<AND>) ?(?<E>E)

со всем & отсутствует!

Этот символ является частью моего шаблона регулярных выражений, поэтому это приведет к дальнейшей ошибке в моей программе.

У кого-нибудь есть идеи, почему этот персонаж & так ОСОБЕННО, а TinyXML просто не умеет читать? даже одинокий & будут уволены?

3 ответа

Решение

Это потому, что это не правильный файл XML. Вы не можете просто вставить & символ в любом месте в XML. Вы должны избежать этого с сущностями:

&amp;

TinyXML будет читать только действительные файлы XML (или, по крайней мере, в основном действительные).

Точно так же вам нужно избежать < а также > персонажи тоже, с &lt; а также &gt;,

Это не правильно сформированный XML. Если вы хотите & характер, вам нужно поставить &amp;,

В xml, & представляется как &amp;

Другие вопросы по тегам