将以下XML写入输出文件时遇到问题。
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="CoreNLP-to-HTML.xsl" type="text/xsl"?>
<root>
<document>
<sentences>
<sentence id="1">
<tokens>
<token id="1">
<word>
Pusheen
</word>
<CharacterOffsetBegin>
0
</CharacterOffsetBegin>
<CharacterOffsetEnd>
7
</CharacterOffsetEnd>
<POS>
NNP
</POS>
</token>
</tokens>
</sentence>
</sentences>
</document>
</root>
如何以xml
格式将其写入输出文件?我尝试使用下面的写声明
tree.write(open('person.xml', 'w'), encoding='unicode').
但是,我收到以下错误
AttributeError: 'str' object has no attribute 'write'
我不必在这里构建XML,因为我已经拥有XML格式的数据。我只需要它将它写入XML文件。
答案 0 :(得分:0)
假设tree
是您的XML,它是一个字符串。你可能想要这样的东西:
with open("person.xml", "w", encoding="unicode") as outfile:
outfile.write(tree)
(对文件使用with
是一种好习惯;它会自动关闭它们)
错误的原因是,由于tree
是一个字符串,因此无法写入。
答案 1 :(得分:0)
我建议先使用lxml
模块检查格式,然后将其写入文件。我注意到你有两个具有相同 id 的元素,引起了我的注意。它没有标记XML中的错误,但它可能会导致HTML页面出现问题,其中每个 id 应该是唯一的。
这是执行上述描述的简单代码:
from lxml import etree
try:
root = etree.fromstring(your_xml_data) # checks XML formatting, returns Element if good
if root is not None:
tree = etree.ElementTree(root) # convert the Element to ElementTree
tree.write('person.xml') # we needed the ElementTree for writing the file
except:
'Oops!'