下面我有一个这样的XML。需要将两个标签数据放在一起
<?xml version=1.0 encoding=UTF-8 standalone=yes?>
<add>
<docs>
<doc>
<field name="sku.active_flag">true</field>
<field name="sku.available_in_postpay">false</field>
<field name="sku.available_in_prepay">false</field>
</doc>
<doc>
<field name="sku_dpp_all_eligibleflow_AAL">TRADEIN_PROMO</field>
<field name="sku_dpp_all_eligibleflow_EUP">TRADEIN_PROMO</field>
<field name="sku_dpp_all_eligibleflow_NSE">TRADEIN_PROMO</field>
</doc>
</docs>
</add>
我试过xmlstarlet sel -t -m "/add/docs/doc" /tmp/xml_data
,但它不工作。
预期输出:
<?xml version=1.0 encoding=UTF-8 standalone=yes?>
<add>
<docs>
<doc>
<field name="sku.active_flag">true</field>
<field name="sku.available_in_postpay">false</field>
<field name="sku.available_in_prepay">false</field>
<field name="sku_dpp_all_eligibleflow_AAL">TRADEIN_PROMO</field>
<field name="sku_dpp_all_eligibleflow_EUP">TRADEIN_PROMO</field>
<field name="sku_dpp_all_eligibleflow_NSE">TRADEIN_PROMO</field>
</doc>
</docs>
</add>
我该怎么做?
3条答案
按热度按时间dl5txlt91#
这是一个非常简单的转换。使用3.0
在早期版本的JavaScript中也很容易,但有点冗长。
7rfyedvj2#
我会将第二个(以及之后的)
doc
节点的所有子节点移动到第一个节点,然后删除空节点:bq9c1y663#
用Perl很容易,我的代码使用正则表达式来匹配特定的模式
<\/doc>\n\n
(包括换行符),并用空字符串替换它!