使用 xmlstarlet 创建有效的 XML

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

我想使用 xmlstarlet 选择一个巨大的 .xml 文件的一些记录。我的问题是,我需要输出是有效的 XML。

最小示例:

使用 xmlstarlet sel -t -c "//record[@type='TypeA']" frage.xml

在包含以下内容的文件 frage.xml 上:

<?xml version="1.0" encoding="UTF-8"?>
<records>
    <record type="TypeA">uqw8hY7V</record>
    <record type="TypeB">bN4mT0zL</record>
    <record type="TypeA">K6p4gJv2</record>
    <record type="TypeB">z8wQ9xV1</record>
    <record type="TypeA">a3rL7kY9</record>
    <record type="TypeB">m1W2pX4e</record>
    <record type="TypeA">y8T6r5zQ</record>
    <record type="TypeB">k9pJ2wT3</record>
    <record type="TypeA">d7V1gL5b</record>
    <record type="TypeB">t4Y6n0pM</record>
</records>

输出:

<record type="TypeA">uqw8hY7V</record><record type="TypeA">K6p4gJv2</record><record type="TypeA">a3rL7kY9</record><record type="TypeA">y8T6r5zQ</record><record type="TypeA">d7V1gL5b</record>

虽然我希望有一些 NL,但我的问题是,没有根节点,这使得处理输出变得不舒服,因为我想要使用的软件需要有效的 XML。

有没有办法让 xmlstarlet 为输出放置根节点?

xmlstarlet
1个回答
0
投票

也许您应该删除而不是选择?例如:

xmlstarlet ed -d '//record[@type != "TypeA"]' frage.xml

输出:

<?xml version="1.0" encoding="UTF-8"?>
<records>
  <record type="TypeA">uqw8hY7V</record>
  <record type="TypeA">K6p4gJv2</record>
  <record type="TypeA">a3rL7kY9</record>
  <record type="TypeA">y8T6r5zQ</record>
  <record type="TypeA">d7V1gL5b</record>
</records>
© www.soinside.com 2019 - 2024. All rights reserved.