Я пытаюсь проанализировать некоторые из моих первых XML-документов в SAX, просто внедрив org.xml.sax.ContentHandler
, и я не знаю, понимаю ли я поток. Для данного XML-документа:
<?xml version="1.0"?>
<list>
<item>
<name>One</name>
<description>The number 1, expressed in letters.
</item>
<item>
<name>Two</name>
<description>The number 2, expressed in letters.
</item>
</list>
Каков будет ожидаемый порядок событий в парсере? Прав ли я, предполагая следующее:
startDocument()
startElement() -> "list"
startElement() -> "item"
startElement() -> "name"
characters() (>=1 times) -> "One"
endElement() -> "name"
startElement() -> "description"
characters() (>=1 times) -> "The number 1, expressed in letters."
endElement() -> "description"
endElement() -> "item"
startElement() -> "item"
startElement() -> "name"
characters() (>=1 times) -> "Two"
endElement() -> "name"
startElement() -> "description"
characters() (>=1 times) -> "The number 2, expressed in letters."
endElement() -> "description"
endElement() -> "item"
endElement() -> "list"
endDocument()
Это в значительной степени суть?
Кроме того, каков самый простой способ анализа? В настоящее время при каждом вызове startElement
я сохраняю в качестве закрытой переменной имя текущего элемента, когда я анализирую данные в вызове characters
. Есть ли более простой / лучший способ сделать это?