2012-09-30 23 views
1

我給了一個XML文件,一個標籤包含多個屬性。但其中一個有時會跳過。 Exampe:如何使用SAX解析器檢查XML屬性是否存在?

<data> 
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2"> 
    <item attribute0="value 0" attribute1="value 1"> 
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2"> 
</data> 

我使用SAX解析器來處理這個文件,並在startElement方法,我讓所有的屬性值,但得到attribute2之前,我需要檢查,如果它的存在。

回答

1

您可以檢查是否使用getIndex(名稱)存在的屬性getIndex(URI,localName創建)。如果它返回-1,那麼該屬性不存在。請參閱getIndex javadoc

0

這個環節的SAXParser

http://java-samples.com/showtutorial.php?tutorialid=152

的一個很好的例子,在委託的startElement我們通常去讀取屬性(org.xml.sax.Attributes)

//Event Handlers 
public void startElement(String uri, String localName, String qName, 
    Attributes attributes) throws SAXException { 
// Read Attributes Here  
} 

首先你可以也尋找

attributes.getLength() 

方法ensu您是否得到 您需要的數量的屬性在飼料或不

什麼是真正可取的是,你不應該擔心這些和代碼,如果你會得到所有。

如果

attributes.getValue("blahblah"); 

給空。這意味着它不在那裏。

而且你直接在你的數據對象中填入null,並在代碼本身中使用它們時要小心。 (空檢查等)

希望它能幫助:)

0

我的回答建立起從Javanator答案,使用SAX解析器。

可以檢查該屬性是空的:

if (item.getAttribute("attribute2").isEmpty()) { } 

公共布爾的isEmpty()

返回:如果長度() 是0,否則爲false

詢問是否存在特定屬性的替代方法是:

if (item.hasAttribute("attribute2")) { } 

布爾hasAttribute(字符串名稱)當此 元素上被指定或具有缺省值與給定名稱的屬性

返回TRUE,否則返回假。