以此语法为例
$xpath = new DOMXPath($dom); $nodes = $xpath->query('//text()');
我在哪里可以找到解释它的官方php / xpath文档?
答案 0 :(得分:2)
我在哪里可以找到一些官员 解释它的php / xpath docs?
符号:
text()
是 node test 中定义的 W3C XPath 1.0 specification ,这是唯一正式的XPath 1.0定义。
特别是,规范说:
“节点测试 text()对于任何文本节点都是”。
"text node “是XPath数据模型中七种不同类型的节点之一。
答案 1 :(得分:1)
官方规范见于official w3 site。记录text()
{{1}}。简而言之,文本节点是包含文本的任何节点,与包含脚本或CSS的节点不同。
答案 2 :(得分:0)
这组XPath示例可能有所帮助。他们使用Ruby,因为这是我最喜欢的语言,但重要的是输出。
require 'nokogiri' # load the parser
xml1 =<<EOT
<xml><node1>test1 text</node1></xml>
EOT
doc = Nokogiri::XML(xml1) # parse the first XML sample
nodes = doc.search('//text()') # find the text() nodes
# inspect the nodes...
nodes # => [#<Nokogiri::XML::Text:0x8054a508 "test1 text">]
# display the nodes' content as text
puts nodes
# >> test1 text
xml2 =<<EOT
<xml>
<node1>test1 text</node1>
</xml>
EOT
doc = Nokogiri::XML(xml2)
nodes = doc.search('//text()')
nodes # => [#<Nokogiri::XML::Text:0x80549608 "\n ">, #<Nokogiri::XML::Text:0x8054952c "test1 text">, #<Nokogiri::XML::Text:0x805493b0 "\n">]
puts nodes
# >>
# >>
# >> test1 text
# >>
html =<<EOT
<html>
<head>
<script type="text/javascript"><!-- javascript --></script>
<style type="text/css"><!-- style sheet --></style>
</head>
<body>
text
<p>p tag</p>
</body>
</html>
EOT
doc = Nokogiri::HTML(html)
nodes = doc.search('//text()')
nodes # => [#<Nokogiri::XML::CDATA:0x80548834 "<!-- javascript -->">, #<Nokogiri::XML::CDATA:0x80548730 "<!-- style sheet -->">, #<Nokogiri::XML::Text:0x805485a0 "\n text\n ">, #<Nokogiri::XML::Text:0x80548488 "p tag">, #<Nokogiri::XML::Text:0x8054830c "\n ">]
puts nodes
# >> <!-- javascript -->
# >> <!-- style sheet -->
# >>
# >> text
# >>
# >> p tag
# >>
# >>
如果将检查和打印输出与解析的XML和HTML进行比较,您可以看到每行标签和标签之间文本的相应文本节点 - 有时它们是空的,即仅“\ n” 。换句话说,文本节点是当标记在单独的行上时强制使用单独行的回车符,它们是标记之间出现的文本。这适用于XML和HTML。
您可以看到在相应的<style>
和<script>
标记内发生的CSS和Javascript也将是text()
个节点。它们被视为CDATA,这是一种定义文本类型的方法,但出于我们的目的,它仍然是文本。
答案 3 :(得分:0)
这是一个很好的xpath 1.0教程