使用 xmlstarlet 在 xml 中插入一行

使用 xmlstarlet 在 xml 中插入一行

我有一个 XML 文件,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Solr managed schema - automatically generated - DO NOT EDIT -->
    <schema name="default-config" version="1.6">
      <uniqueKey>id</uniqueKey>
     ....

我想插入这一行:

<similarity class="solr.BM25SimilarityFactory"/>

之间<schema.. and <uniqueKey像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Solr managed schema - automatically generated - DO NOT EDIT -->
    <schema name="default-config" version="1.6">
    <similarity class="solr.BM25SimilarityFactory"/>
      <uniqueKey>id</uniqueKey>

我正在尝试使用 xmlstarlet 来做到这一点,但运气不佳:(

答案1

使用两个步骤(为了便于阅读,我折叠了线)

xmlstarlet ed -s "//schema" -t elem -n "similarity"  \
              -i "//similarity" -t attr -n "class" -v "solr.BM25SimilarityFactory"  \
 > final.xml

-s注意( )的使用subnode

另请注意,该行是在末尾添加的,但对于 xmlparser 来说应该没有问题。

您可能想看看这个堆栈溢出问题

相关内容