我正在尝试使用xmlstarlet ed
修改xml中的标记值,但我无法弄清楚如何使其与大值一起使用...
我正在尝试使用Article_texte
下载的内部网页的完整源代码更新代码curl
这里是my_xml的摘录,其中包含URL(用于测试目的的linuxgizmos.com)
<?xml version="1.0" encoding="utf-8">
<DOCUMENT>
<Article_url>http://linuxgizmos.com/raspberry-pi-stays-sky-high-in-2015-hacker-sbc-survey/</Article_url>
<Article_texte />
</DOCUMENT>
这是我的shell脚本的摘录
# extract url from file
url_to_dl=$(xmlstarlet sel -t -v "/DOCUMENT/Article_url" my_xml.xml)
# download and update document
xmlstarlet ed -L -u "/DOCUMENT/Article_texte" -v "$(curl -Ls $url_to_dl 2>&1)" my_xml.xml
第二个命令行出错:
/ usr / bin / xmlstarlet:倾听d&#39;参数trop longue
我用那个****度过了我的一天,一些帮助真的很值得欣赏:)
答案 0 :(得分:0)
嗯,首先,为什么有人想问这个问题-_-&#39; ?
现在,我找到了一个&#34;解决方案&#34;不是很性感,但却有把戏
if [ -f "$xml.insert" -a -s "$xml.insert" ]; then
echo "merging ..."
# the tag <Article_texte/> should be on the form :
# <Article_texte>
# </Article_texte>
sed -i -e "s#<Article_texte\s*\(/>\|></Article_texte>\)#\n<Article_texte>\n</Article_texte>\n#" $xml
# we load the content of `$xml.insert` file after the opening tag
sed -i -e "/<Article_texte>/ r $xml.insert" $xml
rm -f "$xml.insert"
fi