我將在前言中指出我在Windows 7上使用Python 2.7.3(x64),並使用lxml 2.3.6。lxml在xml中添加urlencoding?
我有一點奇怪的問題,我希望有人可以幫忙。我沒有在網上找到解決方案,也許我不是在尋找正確的東西。
無論如何,我有一個問題,我用lxml編程構建一些XML,然後輸出到一個文本文件,問題是lxml正在轉換回車到文本
,幾乎像urlencoding - 但我不使用HTML我正在使用XML。
例如,我在記事本中創建一個簡單的文本文件,像這樣:
This
is
my
text
我然後建立一些XML,並添加該文成XML:
from lxml import etree
textstr = ""
fh = open("mytext.txt", "rb")
for line in fh:
textstr += line
root = etree.Element("root")
a = etree.SubElement(root, "some_element")
a.text = textstr
print etree.tostring(root)
這裏的問題是印刷的輸出看起來像這樣:
<root><some_element>This
is
my
text</some_element></root>
爲了我的目的,換行符很好,但t他
元素不是。
我能弄清楚的是,這是因爲我打開文本文件在二進制模式"rb"
(我實際上需要做我的應用程序索引一個大的文本文件)。如果我沒有以二進制模式打開文件"r"
,那麼輸出不包含
(但當然,那麼我的索引不起作用)。
我也試圖改變etree.tostring
到:
print etree.tostring(root, method="xml")
但是沒有在輸出沒有什麼區別。現在
,我可以轉儲XML文本字符串,然後做一個替換$#13;
文物,但是,我希望的是更好的解決方案 - 因爲文本文件,我分析是不是我的控制之下,我擔心文本文件的其他元素可能會在我不知情的情況下轉換爲url風格編碼。
有誰知道防止這種編碼發生的方法嗎?
你的意思是「我的索引不起作用」。您的帖子中沒有證據。也許解決方案是修復索引並以文本模式打開文件...很難說沒有更多的信息。 – isedev 2013-03-21 14:12:17
請參閱http://www.w3.org/TR/xml/#sec-line-ends – 2013-03-21 14:30:45
@isdev我使用的索引器恰好以「rb」模式打開文件,所以我一直在尋找一種解決方案在那裏不需要改變。我確定索引是可能的非二進制模式,但我希望不能去那裏。 – Raceyman 2013-03-21 16:14:51