Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];

Вниз

вопрос про XML   Найти похожие ветки 

 
vegarulez ©   (2009-12-25 15:31) [0]

Добрый день мастерам!
Вопрос следующий использую в элементе xml строку вида:

...
<element_xml>
stroka
vot
takogo
vida
<element_xml>


и пытаюсь из неё потом выдернуть информацию вот таким кодом:

var
 objXMLDoc : IXMLDOMDocument;
 Node, Part : IXMLDOMElement;
 List,ListPrinc : IXMLDOMNodeList;

begin
 objXMLDoc := CreateOLEObject("Microsoft.XMLDOM")as IXMLDOMDocument;
 objXMLDoc.async := False;
 objXMLDoc.loadXML(memo1.Text);
 Node := objXMLDoc.DocumentElement;
if Node<>nil then
Begin
  List := Node.selectNodes("/element_xml");
 memo2.Lines.Append(List.Item[0].Text);
End;
end;


соответсвенно получаю строку на выходе а не набор строк...
Как его читать сразу TStrings и переделать в TStrings после прочтения?

Подскажите...


 
Медвежонок Пятачок ©   (2009-12-25 15:35) [1]

хранить в узле CDATA


 
vegarulez ©   (2009-12-25 15:45) [2]

это как?


 
Медвежонок Пятачок ©   (2009-12-25 15:46) [3]

узел с типом CDATA.


 
Медвежонок Пятачок ©   (2009-12-25 15:46) [4]

<element_xml>
<![CDATA[
stroka
vot
etakogo
vida
]]>
</element_xml>


 
vegarulez ©   (2009-12-25 16:14) [5]

ак как его разбирать?? также .Text?

Сечас попробовал он выдаёт туже самую строку...
с квадратиками в поле TMemo м\у словами... ну т.е. как бы с переносом слов... но он был и без CDATA... как их правильно в TMemo отобразить.

Сюда копирую и всталяю  - она правильно вставляется...
stroka
vot
etakogo
vida

а там отображается с квадратиками вместо переноса каретки...


 
sniknik ©   (2009-12-25 16:21) [6]

> а там отображается с квадратиками вместо переноса каретки...
это и есть символы переноса строки...

попробуй вставлять так
memo2.Lines.Text:= List.Item[0].Text;


 
vegarulez ©   (2009-12-25 16:28) [7]

Да. так всё полуилось... но мне нужно добавить а не заменить полностью мемо... к уже существующим разобранным полям...


 
vegarulez ©   (2009-12-25 16:28) [8]

add и append -  результат один и тот же...


 
sniknik ©   (2009-12-25 16:33) [9]

> add и append -  результат один и тот же...
они добавляют строку, а она может содержать что угодно, в том числе и символы переноса.

> но мне нужно добавить
ну так разбери на строки, с помощью stringlist например, и добавь построчно.


 
vegarulez ©   (2009-12-25 16:48) [10]

Спасибо. рабит.

var
...
 temp_strlist:Tstrings;
...
begin
 temp_strlist:=Tstringlist.Create;
...
 List := Node.selectNodes("/element_xml");
 temp_strlist.Text:=List.Item[0].Text;
 memo2.Lines.AddStrings (temp_strlist);
 temp_strlist.Free;

...


 
sniknik ©   (2009-12-25 16:58) [11]

> add и append -  результат один и тот же...
сомнение взяло, проверил...
memo1.Lines.Add("stroka"#13#10"vot"#13#10"takogo"#13#10"vida");
работает.


 
vegarulez ©   (2009-12-26 14:11) [12]

Попробуй с List.Item[0].Text, как я до этого делал, с чтением xml без привлечения Tstringlist, - уверяю не сработает )


 
sniknik ©   (2009-12-26 14:21) [13]

> Попробуй с List.Item[0].Text, как я до этого делал, с чтением xml без привлечения Tstringlist, - уверяю не сработает )
т.е. ты мне предлагаешь тестовую программку написать чтобы проверить, то что я и так знаю?
уверяю тебя, У МЕНЯ, сработает.
может конечно и придется небольшие преобразования сделать(посмотреть на разделитель сначала) но в итоге сработает.

p.s. лучше уж ты посмотри разницу приведенного и того что там получаешь.


 
vegarulez ©   (2009-12-26 14:36) [14]

Так я же написал уже выше, что у меня всё заработало с привлечением tstringlist в vegarulez ©   (25.12.09 16:48) [10]. Большое спасибо за совет.

Просто странно, что вроде как перенос каретки есть при вставке напрямую List.Item[0].Text, но без разобра в tstringslist в мемо вставляется с символом квадратика ) И когда копируешь куда нить, в блокнот например, - вставляется уже с переносом, нормально разбитая по строкам ) А в самом мемо переноса нет ) А есть квадратики )


 
sniknik ©   (2009-12-26 15:04) [15]

> с привлечением tstringlist в vegarulez ©   (25.12.09 16:48) [10]. Большое спасибо за совет.
совет был глупым т.к. до проверки основывался на неверной исходной информации... (ну то что не работает добавление, только строкой).
можно проще, со stringreplace, т.к. судя по всему xml одтает текст в линуксовом стиле, с разделителями #10 (предположительно, лучше последовать предыдущему совету и посмотреть на разницу).



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1260917974
DillerXX
2009-12-16 01:59
2010.02.28
Инженерно-удлинительное


2-1261892336
NewZ
2009-12-27 08:38
2010.02.28
Экземпляр класса.


2-1261744929
Андрей Пл
2009-12-25 15:42
2010.02.28
Вопрос по потокам, максимально грузит процессор!


13-1124537487
jenbond
2005-08-20 15:31
2010.02.28
Передача параметра из UserControl


4-1229520484
belmol
2008-12-17 16:28
2010.02.28
работа с dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский