TinyXML lib не может правильно прочитать '&' - PullRequest
0 голосов
/ 28 января 2012

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

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

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

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

при отсутствии всех &!

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

У кого-нибудь есть идеи, почему этот символ & такой СПЕЦИАЛЬНЫЙ и TinyXML просто не может читать?даже одинокий & будет уволен?

Ответы [ 3 ]

7 голосов
/ 28 января 2012

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

&amp;

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

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

2 голосов
/ 28 января 2012

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

1 голос
/ 28 января 2012

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

...