2013-03-04 78 views

回答

2

你不能直接這樣做。但是有兩種方法可以做到。

首先,剝離它並不難。例如:

xml = x.toxml() 
with open('foo.xml', 'w') as f: 
    f.write(xml.partition('>')[2]) 

或者,如果你不想在內存中生成整個字符串,你可以寫燕子序言文件包:

class SkipFirstWriter(object): 
    def __init__(self, f): 
     self.f = f 
     self.firstline = True 
    def write(self, buf): 
     if self.firstline: 
      if '>' in buf: 
       self.f.write(buf.partition('>')[2]) 
       self.firstline = False 
     else: 
      self.f.write(buf) 
with open('foo.xml', 'w') as f: 
    skipper = SkipFirstWriter(f) 
    x.writexml(skipper) 

顯然吞下「一切都交給第一個>「對於檢測XML序言是一種冒險的方式......但它起作用。在實際的代碼中,我可能會添加一條評論,解釋這是有效的,爲什麼,但是使用它。

或者,你可以依靠的事實,文檔,而不-序言是文檔的第一個孩子,而做到這一點:

with open('foo.xml', 'w') as f: 
    x.firstChild.writexml(f) 
+0

@abamert非常感謝你的答案YOUT – Tof 2013-03-05 08:13:29