我目前工作的一個C++ MFC項目上的Visual Studio 2003年該項目的目標是能夠採取一個XML文件,其中包含語言的數據,將其轉換爲一個簡單的CSV文件並返回到XML。爲此,我使用TinyXML庫,它非常簡單,足夠滿足我的需求。TinyXML的無法讀取自己的文件
的問題是,一旦我嘗試我的.CSV文件轉換爲XML,創建的XML不能再次打開的TinyXML。從我現在看到的看來,它似乎無法打開它剛剛創建的文件。
一些測試後,我已經能夠讓TinyXML的告訴我它的錯誤:「錯誤#9:無法讀取結束標記」。如果繞過錯誤,那麼文件可以讀取到DOM樹沒有任何理由向右縮進的位置,稍後,文件似乎是空的任何元素。
這是一個錯誤的文件通過TinyXML的作爲讀,已經由它創建之後。
<app>
−
<global>
<langidglobal1 lang="fr">GLOBAL1</langidglobal1>
<langidglobal1 lang="en">GLOBAL1</langidglobal1>
<langidglobal1 lang="ru"/>
<langidglobal1 lang="de"/>
</global>
−
<mainmenu>
<system lang="fr">Syst�me</system>
<system lang="en">System</system>
<system lang="ru"/>
<system lang="de"/>
<motor lang="fr">Moteurs</motor>
<motor lang="en">Motors</motor>
<motor lang="ru"/>
<motor lang="de"/>
<param lang="fr">Param�tres</param>
<param lang="en">Parameters</param>
<param lang="ru"/>
<param lang="de"/>
<diag lang="fr">Diagnostique</diag>
<diag lang="en">Diagnostic</diag>
<diag lang="ru"/>
<diag lang="de"/>
<rod lang="fr">Tiges</rod>
<rod lang="en">Rods</rod>
<rod lang="ru"/>
<rod lang="de"/>
<aide lang="fr">Aide</aide>
<aide lang="en">Help</aide>
<aide lang="ru"/>
<aide lang="de"/>
<exit lang="fr">Quitter</exit>
<exit lang="en">Exit</exit>
<exit lang="ru"/>
<exit lang="de"/>
<runningtools lang="fr">Outils</runningtools>
<runningtools lang="en">Running Tools</runningtools>
<runningtools lang="ru"/>
<runningtools lang="de"/>
<manualpatterns lang="fr">Patron Manuel</manualpatterns>
<manualpatterns lang="en">Manual Patterns</manualpatterns>
<manualpatterns lang="ru"/>
<manualpatterns lang="de"/>
<alarm lang="fr">Alarmes Actives</alarm>
<alarm lang="en">Active Alarms</alarm>
<alarm lang="ru"/>
<alarm lang="de"/>
<patternno lang="fr"># Patron</patternno>
<patternno lang="en">Pattern #</patternno>
<patternno lang="ru"/>
<patternno lang="de"/>
<lastlogs lang="fr">Derni�res Billes</lastlogs>
<lastlogs lang="en">Last Logs</lastlogs>
<lastlogs lang="ru"/>
<lastlogs lang="de"/>
<maintenancemode lang="fr">Entretien</maintenancemode>
<maintenancemode lang="en">Maintenance</maintenancemode>
<maintenancemode lang="ru"/>
<maintenancemode lang="de"/>
−
<toolcustom1 lang="fr"> <!-- Random indentation starts here -->
Force Entr�e
<toolcustom1 lang="en">Force Input</toolcustom1>
<toolcustom1 lang="ru"/>
<toolcustom1 lang="de"/>
<toolcustom2 lang="fr">Force Sortie</toolcustom2>
<toolcustom2 lang="en">Force Output</toolcustom2>
<toolcustom2 lang="ru"/>
<toolcustom2 lang="de"/>
<jogaxis lang="fr">Jog Axes</jogaxis>
<jogaxis lang="en">Jog Axis</jogaxis>
<jogaxis lang="ru"/>
<jogaxis lang="de"/> <!-- And finishes here -->
</toolcustom1>
<toolcustom1 lang="en">Force Input</toolcustom1>
<toolcustom1 lang="ru"/>
<toolcustom1 lang="de"/>
</mainmenu>
<menuparam/> <!-- File is empty from here. There should be elements like above. -->
<menudiag/>
<menurod/>
<menuaide/>
<button/>
<progrid/>
<aboutbox/>
<dlgexit/>
<doc/>
<!-- ...like this until... -->
</app>
如果我得到的第一個元素的指針和瀏覽,而調試,這正是TinyXML的用「的LoadFile()」命令讀什麼。
還要注意的是,如果我做的打開文件(源上面的錯誤之一)與Firefox,或寫字板,或其他任何東西,語法是正確的,沒有錯誤可言。一切都在這裏,沒有失蹤。
我不懷疑我的讀/寫代碼是錯誤的,因爲當我打開/讀/寫一個未觸及的XML文件時,一切似乎按計劃進行。
現在如果有人有任何想法了,爲什麼我得到這個錯誤,我將非常感激。 TinyXML支持和文檔有所限制,並不能解決我的問題。 我一直在尋找答案。