如何从多级 XML 中提取值并使其成为新格式

问题描述 投票:0回答:1

我已经尝试了几个帖子但还没有成功,我想更改下表的格式(级别一直上升到100)


        <level val="1">
            <hp>94</hp>
            <mp>30</mp>
            <cp>37.6</cp>
            <hpRegen>2</hpRegen>
            <mpRegen>0.9</mpRegen>
            <cpRegen>2</cpRegen>
        </level>
        <level val="2">
            <hp>107.65</hp>
            <mp>35.46</mp>
            <cp>43.06</cp>
            <hpRegen>2</hpRegen>
            <mpRegen>0.9</mpRegen>
            <cpRegen>2</cpRegen>
        </level>
        <level val="3">
            <hp>121.45</hp>
            <mp>40.98</mp>
            <cp>48.58</cp>
            <hpRegen>3</hpRegen>
            <mpRegen>0.9</mpRegen>
            <cpRegen>2</cpRegen>
        </level>

并将其转换为以下格式(每个级别用分号分隔):

        <set hpTable="94;107.65;121.45"/>
        <set mpTable="30;35.46;40.98"/>
        <set cpTable="37.6;43.06;48.58"/>
        <set hpRegenTable="2;2;3"/>
        <set mpRegenTable="0.9;0.9;0.9"/>
        <set cpRegenTable="2;2;2"/>

提前致谢。

尝试手动删除标签和转换,几个Python etree替换,但大多数最终都出现错误

xml format extract transform
1个回答
0
投票

在 XSLT 2.0 或更高版本中:

<xsl:for-each-group select="//level/*" group-by="name()">
  <set>
     <xsl:attribute name="{current-grouping-key()}Table"
                    select="string-join(current-group(), ';')"/>
  </set>
</xsl:for-each-group>
© www.soinside.com 2019 - 2024. All rights reserved.