Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 具有选项值的节点序列_Xpath_Xpathdocument - Fatal编程技术网

Xpath 具有选项值的节点序列

Xpath 具有选项值的节点序列,xpath,xpathdocument,Xpath,Xpathdocument,这里有一个关于重复节点和缺少值的问题 给定下面的xml,XPath中是否有返回(value2,null,value5)而不是(value2,value5)的方法?我使用的表达式如下所示: /nodes/node[*]/value2/text() 以检索值。我需要知道缺少了一个值,以及在哪个索引处发生了这种情况。我对XPath完全是个新手,不知道怎么做 <nodes> <node> <value1>value1</value1>

这里有一个关于重复节点和缺少值的问题

给定下面的xml,XPath中是否有返回(value2,null,value5)而不是(value2,value5)的方法?我使用的表达式如下所示:

/nodes/node[*]/value2/text()
以检索值。我需要知道缺少了一个值,以及在哪个索引处发生了这种情况。我对XPath完全是个新手,不知道怎么做

<nodes>
  <node>
    <value1>value1</value1>
    <value2>value2</value2>
  </node>
  <node>
    <value1>value3</value1>
  </node>
  <node>
    <value1>value4</value1>
    <value2>value5</value2>
  </node>
</nodes>

价值1
价值2
价值3
价值4
价值5
亲切问候,


mipper

我想您需要友好地使用xml解析器,自己迭代节点。这个例子是用Ruby编写的;我用注释装饰它,因为我不知道你能读什么语言

#!/usr/bin/ruby1.8

require 'nokogiri'

xml = <<EOS
<nodes>
  <node>
    <value1>value1</value1>
    <value2>value2</value2>
  </node>
  <node>
    <value1>value3</value1>
  </node>
  <node>
    <value1>value4</value1>
    <value2>value5</value2>
  </node>
</nodes>
EOS

# Parse the xml with Nokogiri
doc = Nokogiri::XML(xml)

# Get an array of nodes
nodes = doc.xpath('/nodes/node')

# For each node, get its value.  Put the collected values into the
# "values" array.
values = nodes.collect do |node|
  node.at_xpath('value2/text()').to_s
end

# Print the values in a programmer-friendly format
p values     # => ["value2", "", "value5"]
#/usr/bin/ruby1.8
需要“nokogiri”
xml=
给定下面的xml,XPath中是否有返回的方法(value2,null,value5)

在XPath中,否。XPath只能选择/返回现有节点。它不知道null

在XSLT或任何其他支持XML的编程语言中,这个问题可以通过迭代来解决

<xsl:for-each select="/nodes/node">
  <xsl:value-of select="*[2]" />
  <xsl:text>, </xsl:text>
</xsl:for-each>

,