如何使用 xidel 从 XML 中提取数据
how to extract data from XML with xidel
我对 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.*//
在原始的、未修饰的 XML-来自 namesilo.com 的响应上工作,我想,但我确信有更好的方法。
无效:xidel -e //resource_record[host="www.mydomain.org"]/record_id
作品:xidel -e '//resource_record[host="www.mydomain.org"]/record_id'
Does not work: 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 解释。
我对 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.*//
在原始的、未修饰的 XML-来自 namesilo.com 的响应上工作,我想,但我确信有更好的方法。
无效:xidel -e //resource_record[host="www.mydomain.org"]/record_id
作品:xidel -e '//resource_record[host="www.mydomain.org"]/record_id'
Does not work:
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 解释。