2012-09-30 6 views
1

Я дал файл XML, и один тег содержит количество атрибутов. Однако один из них иногда пропускается. Exampe:Как проверить, существует ли атрибут XML, используя синтаксический анализатор SAX?

<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 (Ури 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 Parser.

Вы можете проверить, если атрибут пуст по:

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

общественного булевой IsEmpty()

Возвращает: true, если длина() является 0, в противном случае ложной

Альтернативный способ узнать, существует ли определенный атрибут:

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

булево hasAttribute (имя String)

Возвращает TRUE, когда атрибут с указанным именем, которое указано на элемент или имеет значение по умолчанию, иначе ложь.

Смежные вопросы