Как проверить, существует ли атрибут XML с использованием SAX-парсера?
Я дал файл XML, и один тег содержит количество атрибутов. Однако один из них иногда пропускается. Exampe:
<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
Мне нужно проверить, существует ли он.
3 ответа
Вы можете проверить, существует ли атрибут, используя getIndex(name) или getIndex (uri, localName). Если он возвращает -1, то атрибут не существует. Смотрите getIndex Javadoc.
Мой ответ основан на ответе от Javanator с использованием SAX Parser.
Вы можете проверить, является ли атрибут пустым:
if (item.getAttribute("attribute2").isEmpty()) { }
public boolean isEmpty ()
Возвращает:true, если length() равно 0, иначе false
Альтернативный способ узнать, существует ли определенный атрибут:
if (item.hasAttribute("attribute2")) { }
логическое значение hasAttribute (имя строки)
Возвращает значение true, если для данного элемента указан атрибут с заданным именем или значение по умолчанию, в противном случае - значение false.
Эта ссылка является хорошим примером 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()
метод, чтобы убедиться, что вы получаете желаемое количество атрибутов в ленте или нет
Что было бы действительно предпочтительнее, так это то, что вам не следует беспокоиться об этом и писать код, как будто вы получите все.
Если
attributes.getValue("blahblah");
дает ноль. это означает, что это не там.
И вы заполняете нуль непосредственно в ваших объектах данных и принимаете меры предосторожности при их использовании в самом коде. (проверка нуля и т. д.)
Надеюсь, поможет:)