2013-04-04 117 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