----------------------- Start of the document ----------------------------
Element q-name: [PHONEBOOK] started.
Element value: [
]
Element q-name: [PERSON] started.
Element value: [
]
Element q-name: [NAME] started.
Element value: [Green]
Element q-name: [NAME] stopped.
Element value: [
]
Element q-name: [EMAIL] started.
Element value: [green@yourserver.com]
Element q-name: [EMAIL] stopped.
Element value: [
]
Element q-name: [PERSON] stopped.
Element value: [
]
Element q-name: [PHONEBOOK] stopped.
----------------------- End of the document ----------------------------
Но, нормально-ли то, что на определенных итерациях возвращается в качестве значения элемента идет символ новой строки (13)... ?
Ну я понимаю для элементов <PHONEBOOK> и <PERSON> (при их встрече вызывается метод СтартЭлемент, далее Characters и пошло...), НО откуда береться значение после элемента <NAME> перед элемнтом <EMAIL> (см.ниже)?
Element q-name: [NAME] started.
Element value: [Green]
Element q-name: [NAME] stopped. Element value: [
]
Element q-name: [EMAIL] started.
В принципе так мне при парсинге необходимо выдирать значения только для определенных элементов — может меня это и не коснется, но мне хотелось-бы понять причину подобной ситуации..
Заранее спасибо.
Ну и извините за столь громоздкий вопросец...
Re: SAX-парсинг. Элементы со значением новая строка (13)
Здравствуйте, alex-ikar, Вы писали:
AI>Но, нормально-ли то, что на определенных итерациях возвращается в качестве значения элемента идет символ новой строки (13)... ?
Нормально
AI>Ну я понимаю для элементов <PHONEBOOK> и <PERSON> (при их встрече вызывается метод СтартЭлемент, далее Characters и пошло...), НО откуда береться значение после элемента <NAME> перед элемнтом <EMAIL> (см.ниже)?
Потому что после элемента NAME идет новая строка, и этот символ так же как и остальные попадет в characters для PERSON.
AI>Element q-name: [NAME] started. AI>Element value: [Green] AI>Element q-name: [NAME] stopped. AI>Element value: [ AI>] AI>Element q-name: [EMAIL] started.
AI>В принципе так мне при парсинге необходимо выдирать значения только для определенных элементов — может меня это и не коснется, но мне хотелось-бы понять причину подобной ситуации..
А какая вообще разница, есть там перевод строки или нет... в XML главное — структура. Пока конечно перевод строки не будет относится к данным.
Re: SAX-парсинг. Элементы со значением новая строка (13)
Немного неправильно написан метод characters, необходимо собирать все последовательности символов, например в StringBuffer:
DefaultHandler handler = new DefaultHandler() {
StringBuffer chunks = new StringBuffer();
...
public void characters(char[] chars, int start, int length) throws SAXException
{
chunks.append(chars, start, length);
}
до вызова метода endElement, только после этого все ситмволы внутри "элемента" будут "собраны" корректно. После этого удаляем всю незначащую информацию и выводим значение "элемента":
> Но, нормально-ли то, что на определенных итерациях возвращается в > качестве значения элемента идет символ новой строки (13)... ? > Ну я понимаю для элементов <PHONEBOOK> и <PERSON> (при их встрече > вызывается метод СтартЭлемент, далее Characters и пошло...), *НО откуда* > береться значение после элемента <NAME> перед элемнтом <EMAIL> (см.ниже)?
Не понял вопрос. В исходном xml после закрытия </NAME> есть перевод строки. Парсер о нём и сообщает. Что не так? И как
по-твоему должно быть? И почему?
Posted via RSDN NNTP Server 2.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай