2012-01-27 33 views
0

我有像一些行的XML文件如下:TinyXml的LIB不能讀「和」正確

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

我使用TinyXML的LIB在C++來解析這個XML文件,但是當我試圖讓「 pat'這樣的行的屬性,TinyXML結果只是忽略任何出現的字符&。也就是說,通過TinyXML的讀取結果變成如:

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

所有&失蹤了!

此字符是我的正則表達式模式的一部分,所以這將導致我的程序中的進一步錯誤。

不要任何人有任何想法,爲什麼這個角色&是如此特殊和TinyXML的就不能看?即使一個獨立的&將被解僱?

+3

'&'在XML編碼爲''&。 [XML基礎知識(http://www.xmlnews.org/docs/xml-basics.html) – ildjarn 2012-01-27 22:36:23

+0

換句話說,你的前提是錯誤的。你沒有一個XML文件,你有一個非XML文件。找出是誰製作的,並告訴他們修復它。 – 2012-01-28 14:17:07

回答

7

這是因爲這不是一個有效的 XML文件。您不能只在XML中的任何位置粘貼&字符。你必須逃避它與實體:

&amp; 

TinyXML只會讀有效的XML文件(或至少大部分是有效的)。

同樣,您還需要轉義<>個字符,其中&lt;&gt;也是。

1

xml&被表示爲&amp;

2

那不是良好的XML。如果你想要一個&字符,你需要把&amp;