谁能解释一下两者之间有什么区别
/root/a[position()=1 or position()=2
Run Code Online (Sandbox Code Playgroud)
和
/root/a[1 or 2]
Run Code Online (Sandbox Code Playgroud)
?我假设2nd是1st的缩写形式,但是Java XPath(Sun JDK 1.6.0)处理器则认为不是这样。以下是我的测试应用程序。
libxml2库和db2 XPath处理器也认为这些路径不同。因此,它看起来不像是JDK错误。
import java.io.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
public class XPathTest {
public static void main(String[] args) throws Exception {
//String xpathStr = "/root/a[position()=1 or position()=2]";
String xpathStr = "/root/a[1 or 2]";
XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
Reader irdr = new StringReader(
"<root><a name=\"first\"/><a name=\"second\"/><a name=\"third\"/></root>");
InputSource isrc = new InputSource(irdr);
XPathExpression expr = xp.compile(xpathStr);
Object result = expr.evaluate(isrc, XPathConstants.NODESET);
NodeList nodes = …Run Code Online (Sandbox Code Playgroud) xpath ×1