2013-10-09 79 views
0

我試圖掃描與XML的文本文件,該XML有許多具有這種結構的項目:解析fscanf()忽略空格或缺失值?

<enemy> 
    <type> 0 </type> 
    <x> 273 </x> 
    <y> 275 </y> 
    <event> </event> 
</enemy> 

的問題是,XML可以有標籤之間,或者在其內部空間。我創建了一個循環,我試圖在每次迭代中執行一次掃描,以便將int類型,x,y和事件分別轉換爲變量。不過,我不知道如何忽略空格,也不知道如何處理缺少的值,因爲一些標記可能有或沒有值(如事件)。

我該如何掃描這個「敵人」無間隔和缺失值?

回答

1

這是一個容易的 - 你不要解析XML使用fscanf()。使用一個真正的XML解析器,否則你會得到一個非常複雜的代碼,80%的時間無法返回錯誤的數據或崩潰。

即使在大多數無害的情況下,XML格式(儘管看起來很簡單)都很複雜,現有的XML解析器也是有原因的。見libxml或許多其他人。不過,如果你想自己解析XML,那麼正確的做法是首先標記輸入,然後確保令牌序列的結果是正確的。這比使用簡單的fscanf()更復雜。

+0

謝謝,不,我不關心自己解析它,我會檢查什麼庫可用。 – lisovaccaro