2015-11-28 110 views
0

我想只得到餐馆在贝鲁特与DOM解析器,请帮助DOM解析器getElement

这是从我的XML文件的一部分:

城市 - > beirut->餐馆,>餐厅 - >名称 - >

tyr->restaurants->restaurant->name-> 

    jbeil->restaurants->restaurant->name-> 

<restaurants> 

    <restaurant> 

    <name> 
    ... 

</restaurant> 

</restaurants> 

<restaurants> 

    <restaurant> 

    <name> 

    ... 

</restaurant> 

</restaurants> 

<restaurants> 

    <restaurant> 

    <name> 

    ... 

</restaurant> 

</restaurants> 

因为这段代码给我所有餐厅所有城市:

尝试{

File inputFile = new File("src/josephXml.xml"); 

    DocumentBuilderFactory dbFactory 

     = DocumentBuilderFactory.newInstance(); 

    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 

    Document doc = dBuilder.parse(inputFile); 

    doc.getDocumentElement().normalize(); 






    NodeList nList = doc.getElementsByTagName("Restaurant"); 

    for (int temp = 0; temp < nList.getLength(); temp++) { 

    Node nNode = nList.item(temp); 


     if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

      Element eElement = (Element) nNode; 



      jTextArea1.append("\n"+"Name  : "+ eElement 
       .getElementsByTagName("name") 
       .item(0) 
       .getTextContent()+"\n " 

,我只希望餐厅贝鲁特请帮

回答

0

您可以使用餐厅,但你的文件使用的餐厅。这不好,因为区分大小写。

使用XPath:你可以选择很多东西,它是非常可读的。

在你的代码替换此:

XPath xPath = XPathFactory.newInstance().newXPath(); 
String expression="/city/beirut/restaurants/restaurant"; 

NodeList nList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);