我希望我可以放弃历史,但请相信以下内容:
无论下面的答案如何 - 无论这个想法多么可怕,或者你有什么更好的想法,上面的内容都会保持不变......我已经走了这条路:P。
<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
(只是将其从一个随机网站上拉下来,以证明我想从word文档中保存XML结构并填入数据)
希望我可以用Python解析,或者将XML文件发送给供应商,供应商然后可以将信息上传到日期库(不 - 我们不能只上传到数据库 - 它必须从Word文档到供应商的XML)。
问题:每当我从MSWord 2007将文件保存到XML时,它给了我所有这些可怕的可怕的XML垃圾 - 我已经检查过是否可以解析它,希望找到嵌入的XML标签,而且我发现它们,但所有办公室标签/废话都是如此混乱,解析它会浪费大量时间。
最后:我怎样才能自动填写XML标签(并且我自动了解有人必须“选择文本”,“分配XML”...更多地谈论'保存'到一个XML)来自我开发的模式(或者我可以创建一个没有模式的示例XML树?)并导出准备上传/解析的内容?
感谢您阅读我的短篇小说:P(希望我足够清楚!)
-J
答案 0 :(得分:1)
如果数据与您提供的示例一样统一(即只有note
元素,并且具有固定数量的字段)您可能能够在Word文档中拥有一个大表, to
,from
,heading
,body
等的列。然后,您可以使用this question中描述的方法之一在Python中解析它输出您的自定义XML。由于.docx
文件已经是XML,这可能会也可能不会使您的工作更简单。
如果数据会更复杂,一个想法可能是使用Word样式将文本映射到正确的标记。您可以为每个标签创建自定义样式,这样用户可以快速轻松地单击(并且可能具有不同的颜色和/或字体)。然后在解析文档时,您可以根据应用的段落样式过滤所有内容。不过,我认为这条路线会很痛苦。
另一种选择可能是使用结构化语法编写文档,如YAML,这很容易手动读/写,您可以解析只是将文件保存为纯文本,例如
# plaintext_export.txt
------------------
Notes:
- From: Somebody
To: Somebody-else
Heading: This is a heading
Message: >
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
- From: Another guy
To: Me
Heading: Huh?
Message: >
Some other message content.
解析就像:
>>> import yaml
>>> from pprint import pprint
>>> with open("plaintext_export.txt", 'r') as f:
... data = yaml.load(f)
...
>>> pprint(data)
{'Notes': [{'From': 'Somebody',
'Heading': 'This is a heading',
'Message': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit
, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \n',
'To': 'Somebody-else'},
{'From': 'Another guy',
'Heading': 'Huh?',
'Message': 'Some other message content.\n',
'To': 'Me'}]}