在Kettle / Spoon中通过XPath提取正确的父属性值

时间:2013-09-11 03:43:42

标签: xml xpath kettle spoon

我有以下XML并使用水壶勺获取XML数据来提取:

<Company cname="ABC">
<Staffs>
    <Manager mname="John">
        <Subordinate sname="Apple">
            <PhoneNo>11111111</PhoneNo>
        </Subordinate>
        <Subordinate sname="Becky">
            <PhoneNo>22222222</PhoneNo>
        </Subordinate>
    </Manager>
    <Manager mname="Peter">
        <Subordinate sname="Cathy">
            <PhoneNo>33333333</PhoneNo>
        </Subordinate>
        <Subordinate sname="Doris">
            <PhoneNo>44444444</PhoneNo>
        </Subordinate>
    </Manager>
</Staffs>
</Company>

如果我将循环XPath 设置为 / Company / Staffs / Manager / Subordinate ,我的管理员名称不正确(所有经理都是John!)< /强>

Mname: ../../*[name()='Manager']/@*[name()='mname']
Sname: @*[name()='sname']
PhoneNo: *[name()='PhoneNo']

|#|Mname|Sname|PhoneNo |
|-+-----+-----+--------|
|1|John |Apple|11111111|
|2|John |Becky|22222222|
|3|John |Cathy|33333333|
|4|John |Doris|44444444|

请帮忙,如何获得正确的经理姓名?

------------------------
|#|Mname|Sname|PhoneNo |
|-+-----+-----+--------|
|1|John |Apple|11111111|
|2|John |Becky|22222222|
|3|Peter|Cathy|33333333|
|4|Peter|Doris|44444444|
------------------------

1 个答案:

答案 0 :(得分:1)

我不知道关于水壶或勺子的任何事情,但IMO如果你循环“Subordinate”(所以Subordinate是一个实际的上下文)你应该使用这些xpaths:

Mname:parent::Manager/@mname

Sname:@sname

PhoneNo:PhoneNo