Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析XML、更改值并将其写回MacOS终端?_Xml_Macos_Bash - Fatal编程技术网

如何解析XML、更改值并将其写回MacOS终端?

如何解析XML、更改值并将其写回MacOS终端?,xml,macos,bash,Xml,Macos,Bash,前言:我不是iOS或Mac开发人员或用户 想要:我想创建一个脚本(.sh,等等),它将 打开一个XML文件 读取特定元素中的值 增加价值 将它写回同一个元素 保存XML文件(返回到自身) 我已经做了一些搜索,但似乎没有发布(我发现的)任何解决方案可以通过操作系统提供的工具/工具包实现这一点。我不需要依赖外部工具包,或者,如果绝对必要,可以从终端安装我需要的任何工具包,或者作为shell脚本执行的一部分 我为什么要这样做?我们正在构建一个跨平台的Cordova应用程序,它使用config.xml来

前言:我不是iOS或Mac开发人员或用户

想要:我想创建一个脚本(
.sh
,等等),它将

  • 打开一个XML文件
  • 读取特定元素中的值
  • 增加价值
  • 将它写回同一个元素
  • 保存XML文件(返回到自身)
  • 我已经做了一些搜索,但似乎没有发布(我发现的)任何解决方案可以通过操作系统提供的工具/工具包实现这一点。我不需要依赖外部工具包,或者,如果绝对必要,可以从终端安装我需要的任何工具包,或者作为shell脚本执行的一部分


    我为什么要这样做?我们正在构建一个跨平台的Cordova应用程序,它使用
    config.xml
    来指定进入每个平台的“应用程序清单”文件的内容(即:iOS应用程序的
    .plist
    ),并且我们希望在CI构建过程中增加/更改存储在该配置文件中的版本。

    考虑这样一行config.xml:

    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    
    sed -i -e 's,<plugin name="cordova-plugin-whitelist" spec="1" />,<plugin name="cordova-plugin-whitelist" spec="1.1" />,' -e 's,<access origin="\*" />,<access origin="localhost" />,' config.xml
    
    
    并彻底测试脚本

    如果要执行的每个查找/替换都跨越多行,那么事情会变得更加棘手

    一个更复杂但不那么脆弱的选择是实际解析xml。您可以安装一个xml解析器包并在bash脚本中使用它。您可以制作一个使用解析xml的perl模块的perl脚本。或者,由于它是一个cordova项目,您可能已经安装了node.js,您可以编写一个节点脚本,该脚本使用解析xml的npm模块