2011-07-17 20 views
0

我想了解如何使用Java讀出XML文件。我想有一個XML標記,可以將其稱爲啓用,將true傳遞給方法,將另一個XML標記傳遞給另一個方法。我希望通過在我的XML文件中添加行並傳遞值作爲valueofnumber來傳遞true。我讀出使用一系列在一個XML文件中的某些字符串if語句測試的XML文件:XML和Java ...關於值與索引相混淆?

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException 
    { 
    if (localName.equals("enabled")){ 
     currentConfig.setenabled(true); 
    } 
    else if (localName.equals("number")){ 
     currentConfig.setnumber(Double.parseDouble(attributes.getValue("number"))) 
    } 
} 

我越來越困惑,如何從XML文件中提取數的值。目前,當我嘗試使用getIndex()時,我只是得到一個沒有任何內容的錯誤。

在此先感謝

+1

您是否將元素名稱(localName)與屬性值混淆?向我們展示您正在嘗試閱讀的XML。 –

+1

我沒有看到任何對'getIndex'的調用。我沒有看到屬性或localName是在哪裏聲明/初始化的。請向我們展示所有相關的代碼。 –

+0

您可以粘貼一些示例XML嗎? – jiggy

回答

1

getValue() method你調用需要一個合格的名字,意爲XML命名空間+本地名的格式非常多。你的XML文檔可能使用了一個你必須提供的命名空間。如果沒有命名空間,則可能需要使用other getValue() method並將null作爲命名空間。這一切都取決於您使用的解析器以及配置方式。你會得到更好的建議轉移到一個更高層次的解析庫,負責這些細微之處給你:

  • StAX並不比SAX更高的水平,但它仍然有一個友好和一般更直觀接口。
  • JDOM,作爲一個DOM解析器,效率會稍差,但它使解析XML非常容易。
  • Commons Digester是一種基於規則的XML解析引擎。當遇到這個或那個元素或屬性時,你建立了你想要發生的事情的規則,然後運行沼氣池。方法調用是您可以設置的規則之一,POJO的創建和人口也是如此。
  • JAXBXStream將完全消除猜測並將XML以最少的配置直接綁定到POJO。那麼你甚至不需要處理XML,而是可以使用普通對象。

編輯:(基於XML示例)您的「編號」不是屬性。這是一個嵌套元素。這就是爲什麼你無法從Attributes對象獲取它的原因。我對其他圖書館的其他建議仍然存在。