搜索

2009-09-22 66 views
2

想这是XML:搜索

<lib> 
<books type="paperback" name="A" /> 
<books type="pdf" name="B" /> 
<books type="hardbound" name="A" /> 
</lib> 

会是怎样的XPath的代码,搜索类型=“简装”和名称=“A”的书吗? TIA。

目前我的代码看起来是这样的:

import org.w3c.dom.*; 
import javax.xml.xpath.*; 
import javax.xml.parsers.*; 
import java.io.IOException; 
import org.xml.sax.SAXException; 

public class demo { 

    public static void main(String[] args) 
    throws ParserConfigurationException, SAXException, 
      IOException, XPathExpressionException { 

    DocumentBuilderFactory domFactory = 
    DocumentBuilderFactory.newInstance(); 
      domFactory.setNamespaceAware(true); 
    DocumentBuilder builder = domFactory.newDocumentBuilder(); 
    Document doc = builder.parse("xml.xml"); 
    XPath xpath = XPathFactory.newInstance().newXPath(); 
     // XPath Query for showing all nodes value 
    String version="fl1.0"; 
    XPathExpression expr = xpath.compile("//books/type[@input="paperback"]/text()"); 

    Object result = expr.evaluate(doc, XPathConstants.NODESET); 
    NodeList nodes = (NodeList) result; 
    for (int i = 0; i < nodes.getLength(); i++) { 
    System.out.println(nodes.item(i).getNodeValue()); 
    } 
    } 
} 
+0

'xpath.compile(“// books/type [@ input =”paperback“]/text()”)'也是无效的Java。 – 2009-09-22 06:48:45

+0

悲伤但真实:Java是框架最依赖XML的语言,但它最不适合处理XML。 – 2009-09-22 06:51:09

+0

是的,虽然你可以添加'<?xml version =“1.0”?>'。 – 2009-09-22 07:33:02

回答

2
/lib/books[@type='paperback' and @name='A'] 

看一看here,如果你与XPath语法挣扎,它有几个很好的例子。

另外,如果你只需要在一般及相关技术XML帮助,看看导向here

+0

@Fiona:我经历了代码,但仍有点困惑。如果我需要搜索“平装书”并检索相应的名称,你能告诉我相同的代码吗? – fixxxer 2009-09-22 07:38:21

+0

/lib/books [@ type ='paperback']/@ name – flybywire 2009-09-22 07:40:30

+0

One more, 由于上述XML中的每个标记的type属性都不相同。我们可以将Type中的值保存在String变量中并将其替换为xpath搜索变量中的值吗? – fixxxer 2009-09-22 07:48:36

0

现在你似乎寻找类似<book><type input="paperback"/></book>这显然是错误的。你的XPath表达式也许应该像//书[@类型= “简装” 和@ NAME = “A”] /文()

+0

由于'books'元素没有conente,所以'text()'不会给你任何东西。 – 2009-09-22 06:46:59

+0

谢谢大家谁贡献了这个线程。 – fixxxer 2009-09-22 08:27:07

0

以上的回答都不错... ...我想贡献资源。我见过的最好的xpath教程是here