首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用xmllint的-模式选项?

如何使用xmllint的-模式选项?
EN

Stack Overflow用户
提问于 2010-02-08 20:25:15
回答 4查看 28.2K关注 0票数 15

我试图了解libxml是如何实现XPath支持的,所以使用xmllint进行测试是有意义的。然而,显而易见的选项--模式,有点模糊,最后我使用了如下内容:

代码语言:javascript
复制
test.xml: <foo><bar/><bar/></foo>

> xmllint --shell test.xml
/  > dir /foo
ELEMENT foo
/  > dir /foo/*
ELEMENT bar
ELEMENT bar

这似乎很有效,这很好,但我还是很好奇。什么是xmllint的模式选项,以及它是如何工作的?

提供一个完全信用的例子。=)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-02 19:24:17

提示出现在“可与解析器的读取器接口一起使用”:xmllint只在传递-stream选项时才使用读取器接口:

代码语言:javascript
复制
$ xmllint --stream --pattern /foo/bar test.xml
Node /foo/bar[1] matches pattern /foo/bar
Node /foo/bar matches pattern /foo/bar
票数 7
EN

Stack Overflow用户

发布于 2011-03-10 14:28:55

看似没有文档的选项--xpath似乎更有用。

代码语言:javascript
复制
% 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
票数 23
EN

Stack Overflow用户

发布于 2010-02-12 22:57:43

来自xmllint(1)手册页:

代码语言:javascript
复制
   --pattern PATTERNVALUE
          Used to exercise the pattern recognition engine, which can be
          used with the reader interface to the parser. It allows to
          select some nodes in the document based on an XPath (subset)
          expression. Used for debugging.

它只理解XPath的一个子集,其目的是帮助调试。真正理解XPath的库是libxslt(3)及其命令行工具xsltproc(1)。

libxml中的模式‘’模块“允许为树中的节点或基于解析器状态的节点编译和测试模式表达式”,它的文档生活在这里:http://xmlsoft.org/html/libxml-pattern.html

阿里。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2224613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档