Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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文件中提取特定标记信息的shell脚本_Xml_Shell_Xml Parsing - Fatal编程技术网

用于从xml文件中提取特定标记信息的shell脚本

用于从xml文件中提取特定标记信息的shell脚本,xml,shell,xml-parsing,Xml,Shell,Xml Parsing,我想为所有相应的标签提取标签信息数据 文件中所有标记的数据为:-1 0 2 4 7 但是我只想要标签中的信息:2 4 7[所需输出] 主支票 真的 -1 照相机01 真的 0 声音1.wav 真的 2. 声音2.wav 真的 4. 声音3.wav 真的 7. 使用xmlstatet工具: xmlstarlet sel -t -v "//SOUNDCHEK/InFrame" -n input.xml //SOUNDCHEK/InFrame-xpath表达式,用于选择属于SOUNDCHEK节

我想为所有相应的
标签提取
标签信息数据

文件中所有
标记的数据为:-1 0 2 4 7

但是我只想要
标签中的
信息:2 4 7[所需输出]


主支票
真的
-1
照相机01
真的
0
声音1.wav
真的
2.
声音2.wav
真的
4.
声音3.wav
真的
7.

使用
xmlstatet
工具:

xmlstarlet sel -t -v "//SOUNDCHEK/InFrame" -n input.xml
  • //SOUNDCHEK/InFrame
    -xpath表达式,用于选择属于
    SOUNDCHEK
    节点子节点的所有
    InFrame
    节点
输出:

2
4
7

尝试使用xmllint并使用xpath选择所需的数据

xmllint --xpath '/APP/SOUNDCHECK/InFrame/text()' file.xml

感谢您的回复,希望您能使用标准命令或shell提供一些解决方案script@ScriptWriter,xml/html解析器是解析xml/html数据的唯一编写工具。任何其他grep/bash/shell工具都应该被视为肮脏的黑客和脆弱的方法