Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.28;
Скачать: CL | DM;

Вниз

вопрос про 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
15-1261043501
wHammer
2009-12-17 12:51
2010.02.28
Не заходил на данный форум уже лет 7, а может и больше :)


6-1213006787
DVM
2008-06-09 14:19
2010.02.28
Виснет TidHTTPServer при попытке его остановки.


2-1261636639
ImmortalxXx
2009-12-24 09:37
2010.02.28
Помогите пожалуйста новичку нулевого уровня.


11-1211784688
Griffit
2008-05-26 10:51
2010.02.28
MCK


15-1260967450
dr_creigan
2009-12-16 15:44
2010.02.28
debug под Vista