我试图看看libxml如何实现XPath支持,所以我使用xmllint进行测试是有意义的.但是,显而易见的选项--pattern,有点模糊,我最终使用了类似下面的内容:
test.xml: <foo><bar/><bar/></foo>
> xmllint --shell test.xml
/ > dir /foo
ELEMENT foo
/ > dir /foo/*
ELEMENT bar
ELEMENT bar
Run Code Online (Sandbox Code Playgroud)
这似乎有效,这很好,但我仍然很好奇.什么是xmllint的--pattern选项,以及它是如何工作的?
提供完整信用的示例.=)
l0s*_*t3d 20
看似无证的选项--xpath似乎更有用.
% cat data.xml
<project>
<name>
bob
</name>
<version>
1.1.1
</version>
</project>
% xmllint --xpath '/project/version/text()' data.xml | xargs -i echo -n "{}"
1.1.1
% xmllint --xpath '/project/name/text()' data.xml | xargs -i echo -n "{}"
bob
Run Code Online (Sandbox Code Playgroud)
提示的单词"可以与解析器的读取器接口一起使用":xmllint在传递--stream选项时仅使用reader接口:
$ xmllint --stream --pattern /foo/bar test.xml
Node /foo/bar[1] matches pattern /foo/bar
Node /foo/bar matches pattern /foo/bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26077 次 |
| 最近记录: |