2013-01-08 47 views
1

我的問題是這樣的:QDomDocument無法打開的內容有:在文本

我打開一個XML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<A> 
    <C>A</C> 
    <D>212</D> 
    <E>Test1 & Test2</E> 
</A> 

這是不可能的設置類似如下的內容:

xmlFile->open(QIODevice::ReadOnly|QIODevice::Text; 

QDomDocument doc("mydocument"); 
if (!doc.setContent(xmlFile, &msg, &line, &col)) { 
     qDebug()-><<"Failure in Column: "<<(QString)col<<" Line: "+(QString)line; 
     return false; 
    } 

如果我從XML文件中刪除&我可以設置內容。

爲什麼?

+2

AFAIK,您的示例文件是無效的XML。 '&'必須表示爲'&'。 – Angew

+0

問題是,我只允許讀取XML,並在XML中聲明瞭如示例中所述的!有誰知道解決方法? – user1957388

+0

您可能想使用自己的'QXmlErrorHandler'並以某種方式從錯誤中恢復。不知道是否有可能。另一種選擇是預處理文件並將'&'轉換爲'&'。 – Angew

回答

2

這是無效的XML。你應該和實體&amp; 更換&例如:

<?xml version="1.0" encoding="UTF-8"?> 
<A> 
<C>A</C> 
<D>212</D> 
<E>Test1 &amp; Test2</E> 
</A> 

您可以驗證XML與online validation service

XML預先定義的實體List

+0

所以我對這個主題稍微談了一點,但事情是,爲了得到一個快速的結果,我如何在XML中實現這個實體?我發現只是一些理論的東西 – user1957388

+0

'&'是一個預先定義的實體,你不必實現。 – divanov

相關問題