【发布时间】:2021-03-25 08:46:32
【问题描述】:
你好所有聪明的人:-) 我正在从 AppleScript 调用 shell 脚本以从 xml 文件中获取值。该文件(简化!)如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProductHints spec="1.0.16">
<Product version="4">
<Name>The Product Name</Name>
<Company>The Company Name</Company>
<PRODID>A123</PRODID>
</Product>
</ProductHints>
我的 AppleScript 看起来像这样:
set thePath to "/Path/to/my/file.xml"
set theResult to do shell script "xmllint " & quoted form of thepath & " --xpath '/ProductHints/Product/Name/text() | /ProductHints/Product/PRODID/text() | /ProductHints/Product/Company/text()'"
display dialog theResult
结果显示: 产品名称公司名称A123
这确实是必需的信息,但用处不大! 我希望结果是制表符分隔或逗号分隔(制表符是理想的,但我可以使用逗号!)例如:
The Product Name **Tab** The Company Name **Tab** A123
或
The Product Name, The Company Name, A123
我确信有一个简单的解决方案可以在每个项目之间放置一些东西,但是我尝试了各种方法都无济于事!
请有好心人帮帮我。提前致谢。
【问题讨论】:
-
您显示的结果确实是我想要获得的结果,并且在我扫描的其他 xml 文件中确实存在其他名称、产品 ID 和公司。 “简化”只是没有显示我不感兴趣的其他标签,如
... 等。 -
我只需要从我解析的每个 xml 文件中找到的三个,用逗号或制表符(或其他东西)分隔。然后将每个 xml 中恢复的信息收集到一个摘要文本文件中三列,因此我更喜欢制表符,但如果需要,我显然可以将逗号或其他内容转换为制表符。
标签: xml shell applescript xmllint