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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

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

Сообщение GAMER »

Код: Выделить всё

'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<status><state>Accepted</state>33</status>'

Вот такая строка. Как получить 33?
Разными комбинациями кода я либо получаю пустую строку либо "Accepted33".
Kemet
постоялец
Сообщения: 241
Зарегистрирован: 10.02.2010 18:28:32
Откуда: Временно оккупированная территория
Контактная информация:

Сообщение Kemet »

это неправильный xml!
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

xml правильный, хотя и странный.
Нужно что-то вроде

Код: Выделить всё

doc.documentElement.childNodes[1].NodeValue
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

А что странного?
doc.documentElement.childNodes[1].NodeValue - помогло.
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение 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>
Kemet
постоялец
Сообщения: 241
Зарегистрирован: 10.02.2010 18:28:32
Откуда: Временно оккупированная территория
Контактная информация:

Сообщение Kemet »

GAMER писал(а):А что странного?

Обычно так не делают, правильно делать атрибуты и читать из значения/
Как-то так:
<status state = "Accepted" value = "33" />
iN0k
постоялец
Сообщения: 146
Зарегистрирован: 18.07.2012 14:09:50

Сообщение iN0k »

Kemet писал(а):Обычно так не делают, правильно делать атрибуты и читать из значения

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

сам постоянно мучаюсь чем пользоваться, но на мой взгляд, прятать данные в атрибуты не хорошо.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение 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>
iN0k
постоялец
Сообщения: 146
Зарегистрирован: 18.07.2012 14:09:50

Сообщение iN0k »

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

гуглил мат часть... там такие холивары :-).
получается что критерий "правильности" только в контексте применения и из него же, контекста, использование атрибутов.
о чем я и хотел намекнуть Kemet`у на фразу
Kemet писал(а):Обычно так не делают, правильно делать атрибуты и читать из значения
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

П.С.: Чувствую ещё с десяток постов и праведники начнут изгонять дьявола )))
Kemet
постоялец
Сообщения: 241
Зарегистрирован: 10.02.2010 18:28:32
Откуда: Временно оккупированная территория
Контактная информация:

Сообщение Kemet »

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

Работать с атрибутами проще, предсказуемый результат, меньше зависимостей от реализации
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

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

А парсеру плохо не станет от длинных строк в атрибутах?)
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

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

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

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

"Война и мир" Лва Толстого засовывать в атрибут не пробовал, но особо не забочусь о длине строк, нареканий не имею. Если у тебя XML файл раздут до нескольких десятков мегобайт то снижение производительности пожалуй естествено.
Последний раз редактировалось qivi 04.12.2014 14:12:05, всего редактировалось 1 раз.
Аватара пользователя
GAMER
энтузиаст
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина
Контактная информация:

Сообщение GAMER »

Большая проблема, когда нужно парсить то, что создано другими и чихать они на тебя хотели :)
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

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

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