gpt4 book ai didi

xmlstarlet 加载外部实体失败

转载 作者:数据小太阳 更新时间:2023-10-29 02:09:56 26 4
gpt4 key购买 nike

我的脚本是一个简单的单行脚本,它使用 curl 获取带有 xml 输出的 URL。我正在尝试仅输出以下标记中的文本:

<TEXT>No Hosts Queued for Purging</TEXT>

我的脚本:

curl -u username:password -H 'X-Requested-With:QualysApiExplorer' 'https://qualysapi.qualys.com:443/api/2.0/fo/asset/host/' -d "action=purge&ips=$1&" | xmlstarlet sel -t -m '/BATCH_RETURN/RESPONSE/BATCH_LIST/BATCH/TEXT' -v "."

不使用 xmlstarlet 时,curl 输出如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE BATCH_RETURN SYSTEM "https://qualysapi.qualys.com/api/2.0/batch_return.dtd">
<BATCH_RETURN>
<RESPONSE>
<DATETIME>2017-04-20T20:27:15Z</DATETIME>
<BATCH_LIST>
<BATCH>
<CODE>1921</CODE>
<TEXT>No Hosts Queued for Purging</TEXT>
</BATCH>
</BATCH_LIST>
</RESPONSE>
</BATCH_RETURN>

使用 xmlstarlet 时出现以下错误:

failed to load external entity "https://qualysapi.qualys.com/api/2.0/batch_return.dtd"
TYPE BATCH_RETURN SYSTEM "https://qualysapi.qualys.com/api/2.0/batch_return.dtd"
^

最佳答案

您可以在执行查询之前使用 fo -D 删除文档类型 (sel) :

xml fo --help
XMLStarlet Toolkit: Format XML document
Usage: xml fo [<options>] <xml-file>
where <options> are
-D or --dropdtd - remove the DOCTYPE of the input docs

以下将起作用:

curl -u username:password \
-H 'X-Requested-With:QualysApiExplorer' \
'https://qualysapi.qualys.com:443/api/2.0/fo/asset/host/' \
-d "action=purge&ips=$1&" | \
xmlstarlet fo -D | \
xmlstarlet sel -t -v "BATCH_RETURN/RESPONSE/BATCH_LIST/BATCH/TEXT"

关于xmlstarlet 加载外部实体失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43529380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com