繁体   English   中英

如何解析 Omnifocus XML 数据以获取有关特定任务的详细信息?

[英]How to parse Omnifocus XML data for details about a particular task?

考虑到 Omnifocus 没有 API,我创建了一个脚本,该脚本可重复提取 XML 格式的 Omnifocus 数据

有关完整的全焦点数据集,请参见此处的链接

我正在尽我所能解析这个数据集,以便我可以为一个名为“这是一个测试任务”的任务获取这些属性

我想从该 xml 数据中提取此任务的以下属性

  • 任务名称:“这是一个测试任务”
  • 完成日期:“10/02/2016”
  • 添加日期:“10/02/2016”
  • 项目:“测试项目”
  • 截止日期:“10/11/2016”
  • 时长:10分钟

请参阅下面的我的python脚本:

from bs4 import BeautifulSoup

text_data = BeautifulSoup(xml_data_set)
list_of_tags = s.find_all(tag.has_attr('id')) 
#This creates an array of strings. The string that I'm interested looks like the following: 
#>> e.g. <task id="lyZY7EINc02" op="update"><added>2016-10-02T19:53:09.672Z</added><modified>2016-10-02T19:53:13.912Z</modified><name>This is a test task</name></task>
list_of_dicts = [loads(dumps(xmltodict.parse(str(i)))) for i in l]
#I then use xmltodict to change each tag into an a dictionary. The tag that I'm interested looks like the following: 
#>> e.g. {'task_@id': 'lyZY7EINc02', 'task_modified': '2016-10-02T19:53:13.912Z', 'task_added': '2016-10-02T19:53:09.672Z', 'task_name': 'This is a test task', 'task_@op': 'update'}

虽然,我可以获得 task_ added 日期和 task_name,但我无法获得我希望获得的其他属性。

您只需要使用名称文本来查找节点,然后只需调用.parent即可获取任务节点。

In [55]: task
Out[55]: <task id="lyZY7EINc02" op="update"><added>2016-10-02T19:53:09.672Z</added><modified>2016-10-02T19:53:13.912Z</modified><name>This is a test task</name></task>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM