Страница 1 из 2

Работа с xml. Вопрос.

СообщениеДобавлено: 27.11.2014 14:11:26
GAMER
Код: Выделить всё
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<status><state>Accepted</state>33</status>'

Вот такая строка. Как получить 33?
Разными комбинациями кода я либо получаю пустую строку либо "Accepted33".

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 27.11.2014 14:42:48
Kemet
это неправильный xml!

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 27.11.2014 15:14:45
Sergei I. Gorelkin
xml правильный, хотя и странный.
Нужно что-то вроде
Код: Выделить всё
doc.documentElement.childNodes[1].NodeValue

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 27.11.2014 15:21:37
GAMER
А что странного?
doc.documentElement.childNodes[1].NodeValue - помогло.

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 27.11.2014 15:52:45
Sharfik
GAMER писал(а):А что странного?

Код: Выделить всё
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<status>
<state>Accepted</state>
33
</status>

Это сложно парсить и читать. Для меня - теряется логика построения файла. Нужно как то так стараться делать.
Код: Выделить всё
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<status>
<state>Accepted</state>
<value>33</value>
</status>

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 27.11.2014 18:25:50
Kemet
GAMER писал(а):А что странного?

Обычно так не делают, правильно делать атрибуты и читать из значения/
Как-то так:
<status state = "Accepted" value = "33" />

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 02.12.2014 15:15:41
iN0k
Kemet писал(а):Обычно так не делают, правильно делать атрибуты и читать из значения

как оценить правильность? где про это можно почитать?

сам постоянно мучаюсь чем пользоваться, но на мой взгляд, прятать данные в атрибуты не хорошо.

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 02.12.2014 15:30:11
hinst
Короче: не должно быть чтобы между двумя закрывающими тэгами что-то было, если только это не HTML.

Хорошо:
Код: Выделить всё
<pair>
  <a>Color</a>
  <b>FFFFFF</b>
</pair>

Тогда в коде это будет представлено так:
Код: Выделить всё
pair.a := 'Color';
pair.b := IntToHex($FFFFFF, 6);


Плохо:
Код: Выделить всё
<pair>
  <a>Color</a>
  FFFFFF
</pair>

Тогда не понятно, FFFFFF где будет?
Код: Выделить всё
pair.a := 'Color';
pair.??? := IntToHex($FFFFFF, 6);


Добавлено спустя 1 минуту 10 секунд:
в HTML нормально:
Код: Выделить всё
<span><b>Жирный</b> текст</span>

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 02.12.2014 16:14:00
iN0k
hinst писал(а):не должно быть чтобы между двумя закрывающими тэгами что-то было, если только это не HTML

гуглил мат часть... там такие холивары :-).
получается что критерий "правильности" только в контексте применения и из него же, контекста, использование атрибутов.
о чем я и хотел намекнуть Kemet`у на фразу
Kemet писал(а):Обычно так не делают, правильно делать атрибуты и читать из значения

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 02.12.2014 16:52:05
qivi
Я последнее время в основном пишу в атрибуты, если нужно сохранить последовательность то вложенными узлами. А вообще всяко писал/читал... не противоречит листингу XML - значит правильно.

П.С.: Чувствую ещё с десяток постов и праведники начнут изгонять дьявола )))

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 03.12.2014 19:03:06
Kemet
iN0k писал(а):о чем я и хотел намекнуть Kemet`у на фразу
Kemet писал(а):Обычно так не делают, правильно делать атрибуты и читать из значения

Работать с атрибутами проще, предсказуемый результат, меньше зависимостей от реализации

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 03.12.2014 21:41:53
Sharfik
Kemet писал(а):Работать с атрибутами проще, предсказуемый результат, меньше зависимостей от реализации

А парсеру плохо не станет от длинных строк в атрибутах?)

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 04.12.2014 10:44:30
qivi
Работать с атрибутами проще, предсказуемый результат, меньше зависимостей от реализации

Только тут надо принимать во внимание что DOM не гарантирует сохранность последовательности атрибутов при чтении, поэтому когда последовательность то же является значимой атрибуты не применимы.

А парсеру плохо не станет от длинных строк в атрибутах?)

"Война и мир" Лва Толстого засовывать в атрибут не пробовал, но особо не забочусь о длине строк, нареканий не имею. Если у тебя XML файл раздут до нескольких десятков мегобайт то снижение производительности пожалуй естествено.

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 04.12.2014 14:02:56
GAMER
Большая проблема, когда нужно парсить то, что создано другими и чихать они на тебя хотели :)

Re: Работа с xml. Вопрос.

СообщениеДобавлено: 04.12.2014 14:18:22
Sharfik
qivi писал(а):"Война и мир" Лва Толстого засовывать в атрибут не пробовал, но особо не забочусь о длине строк, нареканий не имею. Если у тебя XML файл раздут до нескольких десятков мегобайт то снижение производительности пожалуй естествено.

Пока не пробовал. Опасался граблей и просто в значение нода сразу стал писать.