如何在不使用xpath的情况下统计节点并获取属性值

如何在不使用xpath的情况下统计节点并获取属性值

目前我有一个像这样的shell脚本:

LOGIN=`curl 'https://www.ponta.jp/u/LWAS900/SLWAS900010.htm' -sS | grep '<input type="hidden" name\|<form\|</form'`

for i in $(seq $(printf "$LOGIN" | xmllint --xpath "count(/form/input)" -))
do
    printf " -d "
    printf "$LOGIN" | xmllint --xpath "string(/form/input[$i]/@name)" -
    printf "="
    printf "$LOGIN" | xmllint --xpath "string(/form/input[$i]/@value)" -
done

我想在没有 xpath 的 unix 环境上做同样的事情。谁能告诉我该怎么做?

答案1

基于 XML 解析器的解决方案是最佳选择。不过,这里有一个快速的正则表达式技巧:

LOGIN=...
printf "$LOGIN" | 
    perl -nE 'say "-d $1=$2" if /name="(.*?)".*?value="(.*)"/'

相关内容