Xml

使用 xmlstarlet 在 xml 中插入一行

  • January 17, 2020

我有一個如下所示的 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 來做到這一點,但運氣不佳:(

使用兩個步驟(為了便於閱讀,我折線)

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

注意-s( subnode) 的使用。

另請注意,最後添加了該行,但對於 xmlparser 應該沒問題。

您不妨看看這個堆棧溢出問題

引用自:https://unix.stackexchange.com/questions/562626