2011-12-07 109 views
2

我正在學習Java SAX API。我使用php製作了自己的XML feed。下面是XML文檔爲什麼qName工作和LocalName沒有?

enter image description here

現在,當我想讓我的應用程序輸出到控制檯上一無所獲。我將問題指向XMLHandler中的endElement方法,該方法擴展了DefaultHandler。這是我的實現。

public void endElement(String uri, String localName, String qName) throws SAXException { 
     //I added the next three lines for debugging 
     System.out.println("Found End Element " + count + " times"); 
     System.out.println("Localname = " + localName); 
     System.out.println("QName = " + qName); 
     super.endElement(uri, localName, qName); 
     if (this.currentItem != null){ 
      if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEMNAME)){ 
       currentItem.setItemName(builder.toString()); 
      } else if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEMSITE)){ 
       currentItem.setItemSite(builder.toString()); 
      } else if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEMNO)){ 
       currentItem.setItemNo(builder.toString()); 
      } else if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEM)){ 
       System.out.println(currentItem); 
       items.add(currentItem); 
      } 
      builder.setLength(0); 
     } 
     count++; 
    } 

原來,localName源源不絕空因此條件從未舉行過真正與代碼永遠不會進入決策塊。另一方面,qName正確地將所有名稱都帶出來,一旦我將該變量更改爲qNameList<Item> items集合類型確實填滿並正常工作。

我在這裏問爲什麼qName工作,而不是localName?而來自IBM的DeveloperWorks的教程使用了RSS源,並且localName對他來說是完美的。

P.S.這是飼料中使用的IBM教程:http://www.androidster.com/android_news.rss

+1

[API規範](http://docs.oracle.com/javase/1.4.2/docs/api/org/xml/sax/ContentHandler.html)說如果命名空間處理,localName將是空的沒有執行。 – srkavin

+0

[本文](http://www.saxproject.org/namespaces.html)討論名稱空間處理。 – srkavin

+0

@srkavin請發佈這個答案。它解決了這個謎團。謝謝 – prometheuspk

回答

2

按照該SAX namespace for Java API

默認情況下,XML閱讀器將報告一個命名空間URI和在命名空間屬於每個元素的localName創建 ,在開始和 結束處理程序。

也許,如果您向XML添加名稱空間並在該名稱空間中定義您的元素,它將返回一個有效的localName。文章還提到,使用命名空間處理,一些實現將返回空的qName

+0

謝謝。在閱讀http://www.saxproject.org/namespaces.html上的文章後,我的疑惑被清除了。並且學習了表示XML提要的正確和標準方法。謝謝 – prometheuspk

相關問題