像csplit这样的CLI工具允许我们根据特定元素拆分XML文件。我想每组拆分XML文件。例如:
<prices>
<price>
<code>A123</code>
<discount>123</discount>
</price>
<price>
<code>A123</code>
<discount>123</discount>
</price>
<price>
<code>B456</code>
<discount>123</discount>
</price>
</prices>
需要将拆分为一个文件:
<price>
<code>A123</code>
<discount>123</discount>
</price>
<price>
<code>A123</code>
<discount>123</discount>
</price>
和另一个文件:
<price>
<code>B456</code>
<discount>123</discount>
</price>
我们可以通过使用流式XML解析器并将code-element的值与前一个值进行比较来生成新的XML文件(如果它们不相等)。但是,使用CLI工具的组合必须有一种更有效的方法。
答案 0 :(得分:0)
您可以尝试xsh,XML::LibXML的包装:
open file.xml ;
$h := hash code /prices/price ;
for $code in { keys %$h } {
$d := create prices ;
xcp xsh:lookup('h', $code) into $d/prices ;
save :f concat($code, '.xml') $d ;
}