2012-06-27 85 views
-1

我有一個可能或可能不存在於給定XML文檔中的術語(字符串)列表。我需要在屬性值中查找這個字符串,如果找到它,返回它自己的標籤和它的父標籤。我怎樣才能在Java中做到這一點?在XML文檔中查找自我和父標籤

編輯: 我遇到過多種使用DOM Parser或SAX Parser的方法,或者自己寫一個。我想知道最有效的方法。

+0

你試過了什麼?你是否在尋找解決XML文檔問題的數百萬問題?和什麼是xml的樣子?你在找什麼術語?這個問題質量很差,你應該編輯它。 – Th0rndike

回答

0

我自己找到答案。 我用這個

SAXParserFactory spfac = SAXParserFactory.newInstance(); 
SAXParser sp = spfac.newSAXParser(); 
EMSAXParser handler = new EMSAXParser(this.terms); 

然後我採取了以下方法同時使用堆棧來推動在每次啓動並彈出滿足各種標籤。當文本是基礎時,搜索完成,然後如果在文本中找到該術語,則堆棧的上面兩個元素被窺視。

startElement(String uri, String localName, String qName, Attributes attributes); 
characters(char[] buffer, int start, int length); 
endElemnet(String uri, String localName, String qName); 

謝謝大家的幫助。

0

The Java API for XML Processing (JAXP)

用於XML處理(JAXP)的Java API的使應用程序能夠解析, 變換,使用獨立於特定XML處理器實現的 API驗證和查詢XML文檔。 JAXP 提供了一個可插入層,使供應商能夠提供他們自己的 實現,而不會在應用程序代碼中引入依賴關係。

The Java XPath API

XPath表達式比詳細文獻 對象模型(DOM)導航代碼來寫要容易得多。當您需要從XML文檔中提取 信息時,最快和最簡單的方法是 在您的Java程序中嵌入XPath表達式。 Java 5引入了 javax.xml.xpath包,這是一個使用XPath查詢文檔的XML對象模型獨立庫 。

0

您可以運行XML文檔的XPath表達式:

InputSource source= new InputSource(new FileInputStream(doc))); 
XPathFactory factory = XPathFactory.newInstance(); 
XPath xpath = factory.newXPath(); 
NodeList nodes = (NodeList)xpath.evaluate("//@*[. = \'" + myString + "\']", source, XPathConstants.NODESET); 

然後可以使用所產生的節點列表,以獲得含有節點對象和他們的父節點。