0

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

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

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

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

  • 任务名称:“这是一个测试任务”
  • 完成日期:“2016 年 10 月 2 日”
  • 添加日期:“2016 年 10 月 2 日”
  • 项目:“测试项目”
  • 截止日期:“2016 年 10 月 11 日”
  • 时长: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,但我无法获得我希望获得的其他属性。

4

1 回答 1

0

您只需要使用名称文本来查找节点,然后只需调用.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>
于 2016-10-03T12:22:39.807 回答