私の質問には2つの質問が含まれていることを知っています...
まず、xmllint を使用して "loc" コンテンツ タグを出力します。ロードしたサイトマップには xmlns="..." があります。
xmllint シェルでは、これを行う必要があります。
setrootns
xpath //defaultns:loc
それはうまくいきます...問題ありません。しかし、これを bash スクリプトで行う必要があります。
(AFAIK)xmllintには「行こう、setrootns」と伝えるオプションがないため、これを行うことはできません:
xmllint --xpath "//loc" sitemaps.xml
# or
xmllint --xpath "//defaultns:loc" sitemaps.xml
これが最初の質問です。どうすれば xmllint にデフォルトの ns をロードするように指示できますか?
できない場合は、2 番目の解決策を見てみましょう。
xmlns 属性を削除すると、使用する ns がなくなります。
xmllint --xpath "//loc" <(sed -r 's/xmlns=".*?"//' sitemaps.xml)
しかし...今... 500個の「loc」コンテンツの応答全体が1行に連結されています!...
私もこれを試しました:
xmllint --shell sitemaps.xml <<EOF
setrootns
xpath //defaultns:loc/text()
EOF
またはもう一度
xmllint --shell sitemaps.xml <<EOF
setrootns
cat //defaultns:loc
EOF
最初は私に与えます(たとえば)
465 TEXT
content=http://...
切り捨てられた URL
2番目は、2行ごとに「------」...そして最後の行に「/>」が表示されます...
そして、私はとても緊張し始めます... :)
解決策が見つかった場合は、どうもありがとうございます。
目標は、1 行に 1 つずつ、すべての場所を設定することです。