【问题标题】:how to extract data from XML with xidel如何使用 xidel 从 XML 中提取数据
【发布时间】:2020-06-30 09:14:32
【问题描述】:

我对 xidel 很感兴趣,想将它与 namesilo.com API 一起用于更新 DNS 记录。我在构建正确的选择器时遇到了麻烦。假设我有以下 xml 响应,我将如何为主机 www.mydomain.org 选择 record_id?

<?xml version="1.0"?>
<namesilo>
  <request>
    <operation>dnsListRecords</operation>
    <ip>62.157.5.106</ip>
  </request>
  <reply>
    <code>300</code>
    <detail>success</detail>
    <resource_record>
      <record_id>7e1abd117be5506febe327ab906f67c7</record_id>
      <type>A</type>
      <host>www.mydomain.org</host>
      <value>182.245.2.23</value>
      <ttl>172817</ttl>
      <distance>0</distance>
    </resource_record>
    <resource_record>
      <record_id>7e75694e3da869315b92d386dcbed45b</record_id>
      <type>A</type>
      <host>m.mydomain.org</host>
      <value>21.148.13.45</value>
      <ttl>172817</ttl>
      <distance>0</distance>
    </resource_record>
  </reply>
</namesilo>

我还没有通过xidel --extract //resource_record,真的。到目前为止,//resource_record[host="www.mydomain.org"]/record_id 和类似的所有尝试都失败了。我猜,通过 grep 和 sed 可以通过 xidel --extract //resource_record | grep www.mydomain.org | sed s/www.mydomain.org.*// 处理来自 namesilo.com 的原始、未经修饰的 XML 响应,但我确信有更好的方法。

【问题讨论】:

  • 无法在您的示例 xml 上复制您的问题;我的输出是7e1abd117be5506febe327ab906f67c7
  • 你没有提到你正在使用的操作系统。 -e '//resource_record[host="www.mydomain.org"]/record_id' 用于 Unix。 -e "//resource_record[host='www.mydomain.org']/record_id" 适用于 Windows。
  • 谢谢,@Reino。问题是缺少 ' 撇号。我在 Unix 上。

标签: xml xidel


【解决方案1】:

不起作用:xidel -e //resource_record[host="www.mydomain.org"]/record_id

一般来说,建议引用(提取)查询。这并不意味着没有引号就不能工作:

xidel -s <input> -e //resource_record\[host=\"www.mydomain.org\"\]/record_id
7e1abd117be5506febe327ab906f67c7

只是你必须通过转义某些字符来防止它们被 Bash 的 shell 解释。

【讨论】:

    【解决方案2】:

    不起作用:xidel -e //resource_record[host="www.mydomain.org"]/record_id

    作品:xidel -e '//resource_record[host="www.mydomain.org"]/record_id'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2015-01-14
      相关资源
      最近更新 更多