让我们尝试从Yahoo Weather RSS解析并提取节点。
网址在这里http://weather.yahooapis.com/forecastrss?w=12602818&u=c
xmllint 必须用于此目的。
以下是要提取的节点:
<yweather:condition text="Partly Cloudy" code="30" temp="3" date="Fri, 16 Nov 2014 8:10 am AST" />
问题
天真的xmllint --xpath "//yweather:condition" the_rss_file_from_yahoo
回复了错误:
XPath error : Undefined namespace prefix
xmlXPathEval: evaluation failed
XPath evaluation failure
它必须来自于定义了命名空间的事实。但我们被困在这里。
是否可以在命令行中使用 xmllint 获取此节点?如果是的话,怎么样?
修改/应答:
由于问题被标记为重复,如果你是像我一样的XPath新手寻找单线解决方案,你可以使用xmllint filename --xpath "//*[local-name()='condition']"
,与另一个问题相反的两个斜线,这是使用一个(因为它是访问根节点)。但是,对于解决此问题的正式方法,请参阅原始问题中的答案A)并使用//而不是/在XPath查询中(感谢Tomalek帮助我)。