2013-04-04 90 views
0

我想从给定的col_alt的表标签中找到@name。任何人 可以帮助我这个。 是否可能与javax.XML.Xpath?如果不是,你可以建议 其他方式来找到这个。在java中解析XML文档

这是XML数据的例子:

<?xml version="1.0" encoding="UTF-8"?> 
<mapping> 
    <table name="CLIENT"> 
     <table_column> 
      <column name="CLIENT_NAME"> 
       <col_alt>CLIENT_NAME</col_alt> 
       <col_alt>CLIENT NAME</col_alt> 
       <col_alt>NAME</col_alt> 
       <col_alt>NAMES</col_alt> 
       <col_alt>CUST NAME</col_alt> 
       <col_alt>CUSTOMER NAME</col_alt> 
      </column> 
      <column name="CLIENT_ADDRESS"> 
       <col_alt>ADDRESS</col_alt> 
       <col_alt>LIVES IN</col_alt> 
       <col_alt>LOCATION</col_alt> 
       <col_alt>STAY</col_alt> 
      </column> 
      <column name="CLIENT_CONTACT_NO"> 
       <col_alt>CONTACT NO</col_alt> 
       <col_alt>CONTACT</col_alt> 
      </column> 
     </table_column> 
    </table> 
    <table name="SALES_MASTER"> 
     <table_column> 
      <column name="SALE_DATE"> 
       <col_alt>SALE DATE</col_alt> 
       <col_alt>BILL DATE</col_alt> 
       <col_alt>SALES DATE</col_alt> 
      </column> 
      <column name="TOTAL_BILL"> 
       <col_alt>TOTAL BILL</col_alt> 
       <col_alt>GRAND TOTAL</col_alt> 
      </column> 
     </table_column> 
    </table> 
</mapping> 
+0

我尝试使用java.XML.XPath但未能这样做。 – Pankaj 2013-04-04 07:48:27

回答

0

如果我没记错的话这样的XPath表达式应该为你工作。我没有完整的代码来尝试。

XPathExpression expr = xpath.compile("//table/table_column/column[col_alt='SALE DATE']/@name"); 
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()); 
} 

doc - 是xml的文档参考。

+0

从这我如何得到@

标签 – Pankaj2013-04-04 08:23:29

+0

添加代码,以显示你将如何阅读你的信息。由于我不知道col_alt的值是否是唯一的,我使用了NodeSet。如果你知道,然后看看XPathConstants中的其他选项,如String等。 – 2013-04-04 08:34:31

+0

Thanx,为您的宝贵意见。 – Pankaj 2013-04-04 08:56:50

0

您是否有XML的模式?如果是的话,你可以检查JAXB

+0

我没有架构。 – Pankaj 2013-04-04 08:25:58