# 解題 DEMO > 6年前,母親的年齡是兒子的5倍,6年後母子年齡和是78歲,問:母親今年多少歲? 希望可以Kevin可以output appTree的 xml,這邊直接使用並計算。 ## Rule 處理 ### 6年前 ### 母親的年齡是兒子的5倍 ### 6年後母子年齡和是78歲 normalize: 母親6年後的年齡和兒子6年後的年齡和是78歲 ## 程式 ### 6年前 ### 母親的年齡是兒子的年齡的5倍 ``` 母親的年齡是兒子的年齡的5倍 ├─5倍 ├─兒子 │ └─年齡 │ └─六年前 └─母親 └─年齡 └─六年前 ``` XML example ```xml <root> <人稱 data="母親"> <年齡 data="年齡"> <時間 data="六年前"></時間> </年齡> </人稱> <人稱 data="兒子"> <年齡 data="年齡"> <時間 data="六年前"></時間> </年齡> </人稱> <倍數 data="5倍"></倍數> </root> ``` xpath ```xquery //人稱[@data="兒子"]/年齡/@data ``` ``` m=root.xpath('//人稱[@data="母親"]') m.xapth('年齡') ``` **Operations Reference** * xml.etree.ElementTree ### 6年後母子年齡和是78歲 ### 問:母親今年多少歲? ## Abandon Records :::spoiler json ```javascript [ {"label":"人稱","value":"母親","child_nodes": [ {"label":"年齡","value":"年齡","child_nodes":[]} ] }, {"label":"人稱","value":"兒子","child_nodes": [ {"label":"年齡","value":"年齡","child_nodes":[]} ] }, {"label":"倍數","value":"5倍","child_nodes":[]} ] ``` ```javascript {"root": [ { "人稱": { {"年齡":[],"data":"年齡"} }, "data":"母親" }, { "人稱": [ {"年齡":[],"data":"年齡"} ], "data":"兒子" }, { "倍數":[], "data":"5倍" } ], "data":0 } t[人稱][年齡][data] ``` ::: :::spoiler treelib & anytree ## Treelib build tree ```python tree = Tree() tree.create_node("母親的年齡是兒子的年齡的5倍", "root") # root node tree.create_node("母親(人稱)", "人稱_1", parent="root", data="母親") tree.create_node("年齡(年齡)", "年齡_1", parent="人稱_1", data="年齡") tree.create_node("兒子(人稱)", "人稱_2", parent="root", data="兒子") tree.create_node("年齡(年齡)", "年齡_2", parent="人稱_2", data="年齡") tree.create_node("5倍(倍數)", "倍數", parent="root", data="5倍") tree.show() ``` json ```python import json js = tree.to_json(with_data=True) json.loads(js) ``` dictionary ```python tree.to_dict(with_data=True) ``` https://anytree.readthedocs.io/en/latest/ :::