我使用Python3.5中的xml
庫讀取和編寫一個xml文件。我不修改該文件。只需打開並寫入。但是庫修改了文件。爲什麼xml包在Python3中修改我的xml文件?
- 爲什麼修改?
- 我該如何預防?例如我只想在一個非常複雜的xml文件中替換特定標籤或其值,而不會丟失任何其他信息。
這是例如文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<movie>
<title>Der Eisbär</title>
<ids>
<entry>
<key>tmdb</key>
<value xsi:type="xs:int" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">9321</value>
</entry>
<entry>
<key>imdb</key>
<value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">tt0167132</value>
</entry>
</ids>
</movie>
這是代碼
import xml.etree.ElementTree as ET
tree = ET.parse('x.nfo')
tree.write('y.nfo', encoding='utf-8')
和XML文件將成爲該
<movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<title>Der Eisbär</title>
<ids>
<entry>
<key>tmdb</key>
<value xsi:type="xs:int">9321</value>
</entry>
<entry>
<key>imdb</key>
<value xsi:type="xs:string">tt0167132</value>
</entry>
</ids>
</movie>
- 1號線走了。
<movie>
- 第2行中的標籤現在有屬性。- 第7行和第11行中的
<value>
-tag現在具有較少的屬性。
通常,XML命名空間的短名稱(以及它們在哪裏指定)不能期望是穩定的。但是爲什麼你不使用'lxml'呢? – o11c
'lxml'默認情況下保留了命名空間,儘管您仍然必須通過一個標誌才能將XML聲明置頂。 – o11c
@ o11c你的意思是一個python包'lxml'?我沒有注意到它。我只是在Python文檔中使用'xml'作爲搜索詞,並找到了'ElementTree'。 – buhtz