我有良好的xml(開放標籤已關閉等),但沒有dtd,命名空間並不總是正確的,並且存在隨機實體。操作格式良好的XML(在linux下運行的任何語言)
我在一些xml文件中發現了錯誤,並且想自動修復此錯誤。本質上,XML文件看起來像這樣:
<foo>
<bar> hi </bar>
<!-- ... -->
<math><sometag><another>bar</another></sometag></math>
<!-- ... -->
</foo>
我想改變這
<foo>
<bar> hi </bar>
<!-- ... -->
<m:math><m:sometag><m:another>bar</m:another></m:sometag></m:math>
<!-- ... -->
</foo>
我看着Python的ElementTree的,但根據diveintopython的也不會喜歡這樣的事實,它不驗證XML ?另外,除了使用m:
的前綴之外,不應該更改任何內容。
由於我正在寫一堆shell腳本來修復文件,我並不真正關心這門語言,儘管我目前選擇的武器是Python。
澄清:
- 的XML並通過在其上執行xmllint
- 我真的想要一個XML解決方案,因爲解析使用正則表達式XML的方式古怪
- 我不知道可以在
<math>
和</math>
之間的標籤的名稱 - 不應修改文檔,但 th前綴標記的前綴
m:
+1「使用正則表達式解析xml是w ay to flakey「 – 2011-03-19 00:41:11
最後,我結束了匹配與正則表達式(因爲然後我可以使用這個替換在xml不保證驗證過程中的一個點):http:// stackoverflow .com/questions/5409161/how-to-prevent-elementtree-fromstring-or-tostring-from-dropping-commentnode。我第一次嘗試使用Beautifulsoup,但是對於xml,這似乎更安全,並且它是空間保留的,但只是失去了評論。感謝大家!我學到了很多:) – markijbema 2011-03-23 17:21:40