Augas对XML文件进行排序



我需要编辑一些XML文件,我可以删除和设置,但我不知道是否可以以及如何仅使用Augas对XML文件进行排序?

有人这样做过吗?我现在正试图避开Augas之外的其他资源?

我使用的是木偶、红宝石、贝壳脚本。我可以在木偶中使用augeas,而不仅仅是augtool。

这正是我的任务:根据元素名称、属性名称、表和列对元素进行排序

我有一个很大的XML文件,它实际上包含了很多表,这是一个表的例子:

<table name="validation_rule" numRows="6" remarks="" schema="public" type="TABLE">
<column autoUpdated="false" digits="0" id="0" name="id" nullable="false" remarks="" size="10" type="int4">
<child column="validation_rule_id" foreignKey="meta_field_name_validation_rule_id_fkey" implied="false" onDeleteCascade="false" table="meta_field_name"/>
<child column="validation_rule_id" foreignKey="preference_type_validation_rule_id_fkey" implied="false" onDeleteCascade="false" table="preference_type"/>
<child column="validation_rule_id" foreignKey="validation_rule_attributes_validation_rule_id_fkey" implied="false" onDeleteCascade="false" table="validation_rule_attributes"/>
</column>
<column autoUpdated="false" digits="0" id="1" name="rule_type" nullable="false" remarks="" size="25" type="varchar"/>
<column autoUpdated="false" digits="0" id="2" name="enabled" nullable="true" remarks="" size="1" type="bool"/>
<column autoUpdated="false" digits="0" id="3" name="optlock" nullable="false" remarks="" size="10" type="int4"/>
<primaryKey column="id" sequenceNumberInPK="1"/>
<index name="validation_rule_pkey" unique="true">
<column ascending="true" name="id"/>
</index>
</table>

这就是我如何从同一个样本文件中删除:

augtool> set /augeas/load/xml/lens "Xml.lns" 
augtool> set /augeas/load/xml/incl /home/ESSENT/i.camilovic/test/test.xml
augtool> load
augtool> rm /files/home/ESSENT/i.camilovic/test/test.xml/TopLevel/FooBar
augtool> save

下面是木偶中的一个代码示例,我们将其用于其他用途:

augeas { "${name} ReverseBuild Threshold fails":
lens    => 'Xml.lns',
incl    => $config_file,
context => "${context}/triggers/jenkins.triggers.ReverseBuildTrigger/threshold",
changes => [
"set name/#text 'FAILURE'",
"set ordinal/#text '2'",
"set color/#text 'RED'",
"set completeBuild/#text 'true'",
],
notify  => Exec['reload-configuration'],
require => Augeas["${name} Upstream Projects"],
}

这不能单独使用Augas(即augtool(来实现,但可以使用Augas库和语言绑定来实现。您在哪种情况下使用Augas?

与其在Puppet中使用Augas来实现该任务,我建议使用exec,例如:

exec { "Sort test.xml":
path        => $::path,
command     => 'xmllint -c14n -o /path/to/test.xml /path/to/test.xml',
refreshonly => true,
}

相关内容

  • 没有找到相关文章

最新更新