明明白白回答你的問題沒有,因爲XML格式使用這些字符來表示父和子元素,例如,你不能有任何的價值領域的<
或>
XML文件<note>
,<to>
,<from>
等
擴大對我的回答:當一個Python腳本使用XML library寫道:<
或>
,圖書館它們轉換爲分別<
或>
。我不相信這是可能的,因爲它實際上過濾了<
和>
字符以及字符實體引用。這是有道理的 - XML庫正在阻止您中斷用於父項xml.etree.cElementTree.Element
或任何子項xml.etree.cElementTree.SubElement
對象字段的語法。例如,使用在此great answer代碼塊進行實驗:
import xml.etree.cElementTree as ET
root = ET.Element("root")
doc = ET.SubElement(root, "doc")
ET.SubElement(doc, "field1", name="blah").text = "some <value>"
ET.SubElement(doc, "field2", name="asdfasd").text = "some <other value>"
tree = ET.ElementTree(root)
tree.write("filename.xml")
這產生<root><doc><field1 name="blah">some <value></field1><field2 name="asdfasd">some <other value></field2></doc></root>
。
美化它:
<root>
<doc>
<field1 name="blah">
some <value>
</field1>
<field2 name="asdfasd">
some <other value>
</field2>
</doc>
</root>
然而,並沒有什麼東西手動添加這些字符阻止你:在XML文件中讀取和重新寫,添加文字,即使它包含<
或>
。如果你想要一個合適的XML文件,只要確保這些字符只用在註釋字段中。
爲您的特定問題,你可以從客戶端的XML文件中的行讀取,那麼要麼刪除<
和>
字符,如果客戶需要它們,將它們移動到行的註釋部分。部分挑戰是你必須離開<note>,
`等文件部分...這是具有挑戰性的,但它是可能的!
以下是我期望的結果。
<?xml version="1.0" encoding="UTF-8"?>
<note Name="PrintPgmInfo VDD"> <!-- PrintPgmInfo <> VDD -->
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
如果您不想讓客戶端修復該文件,那麼顯而易見的解決方案就是讓您自己修復它。如果它是一次性的,編輯它並用預定義的實體引用替換保留的字符;如果這種情況會重複發生,請在您選擇的批處理編輯器中編寫一個sed腳本或等效代碼以進行更改。 (如果您沒有選擇的批處理編輯器,並且遇到類似的問題,那麼您應該瞭解批處理編輯器並善於處理。) – 2015-04-01 20:22:40