【问题标题】:How can I insert separator characters in a xmllint query that returns several results如何在返回多个结果的 xmllint 查询中插入分隔符
【发布时间】: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


【解决方案1】:

哎呀!那个代码块有点乱。我再试一次:

set thepath to "/Path/to/My/file name.xml"
 set theScript to "xmllint --xpath \"concat(/ProductHints/Product/Name/text(),',',/ProductHints/Product/PRODID/text(),',',/ProductHints/Product/Company/text())\" " & quoted form of thepath
 set theResult to do shell script theScript without altering line endings
display dialog theResult

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2010-09-25
    • 2020-10-23
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多