# 解題 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/
:::