![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос про XML [D7, XP]
vegarulez © (2009-12-25 15:31:00)Добрый день мастерам!
Вопрос следующий использую в элементе 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 после прочтения?
Подскажите...
sniknik (2009-12-26 15:04:00) [1]> с привлечением tstringlist в vegarulez © (25.12.09 16:48) [10]. Большое спасибо за совет.
совет был глупым т.к. до проверки основывался на неверной исходной информации... (ну то что не работает добавление, только строкой).
можно проще, со stringreplace, т.к. судя по всему xml одтает текст в линуксовом стиле, с разделителями #10 (предположительно, лучше последовать предыдущему совету и посмотреть на разницу).
vegarulez (2009-12-26 14:36:00) [2]Так я же написал уже выше, что у меня всё заработало с привлечением tstringlist в vegarulez © (25.12.09 16:48) [10]. Большое спасибо за совет.
Просто странно, что вроде как перенос каретки есть при вставке напрямую List.Item[0].Text, но без разобра в tstringslist в мемо вставляется с символом квадратика ) И когда копируешь куда нить, в блокнот например, - вставляется уже с переносом, нормально разбитая по строкам ) А в самом мемо переноса нет ) А есть квадратики )
sniknik (2009-12-26 14:21:00) [3]> Попробуй с List.Item[0].Text, как я до этого делал, с чтением xml без привлечения Tstringlist, - уверяю не сработает )
т.е. ты мне предлагаешь тестовую программку написать чтобы проверить, то что я и так знаю?
уверяю тебя, У МЕНЯ, сработает.
может конечно и придется небольшие преобразования сделать(посмотреть на разделитель сначала) но в итоге сработает.
p.s. лучше уж ты посмотри разницу приведенного и того что там получаешь.
vegarulez (2009-12-26 14:11:00) [4]Попробуй с List.Item[0].Text, как я до этого делал, с чтением xml без привлечения Tstringlist, - уверяю не сработает )
sniknik (2009-12-25 16:58:00) [5]> add и append - результат один и тот же...
сомнение взяло, проверил...
memo1.Lines.Add('stroka'#13#10'vot'#13#10'takogo'#13#10'vida');
работает.
vegarulez (2009-12-25 16:48:00) [6]Спасибо. рабит.
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:33:00) [7]> add и append - результат один и тот же...
они добавляют строку, а она может содержать что угодно, в том числе и символы переноса.
> но мне нужно добавить
ну так разбери на строки, с помощью stringlist например, и добавь построчно.
vegarulez (2009-12-25 16:28:00) [8]Да. так всё полуилось... но мне нужно добавить а не заменить полностью мемо... к уже существующим разобранным полям...
vegarulez (2009-12-25 16:28:00) [9]add и append - результат один и тот же...
sniknik (2009-12-25 16:21:00) [10]> а там отображается с квадратиками вместо переноса каретки...
это и есть символы переноса строки...
попробуй вставлять так
memo2.Lines.Text:= List.Item[0].Text;
vegarulez (2009-12-25 16:14:00) [11]ак как его разбирать?? также .Text?
Сечас попробовал он выдаёт туже самую строку...
с квадратиками в поле TMemo м\у словами... ну т.е. как бы с переносом слов... но он был и без CDATA... как их правильно в TMemo отобразить.
Сюда копирую и всталяю - она правильно вставляется...
stroka
vot
etakogo
vida
а там отображается с квадратиками вместо переноса каретки...
Медвежонок Пятачок (2009-12-25 15:46:00) [12]узел с типом CDATA.
Медвежонок Пятачок (2009-12-25 15:46:00) [13]<element_xml>
<![CDATA[
stroka
vot
etakogo
vida
]]>
</element_xml>
vegarulez (2009-12-25 15:45:00) [14]это как?
Медвежонок Пятачок (2009-12-25 15:35:00) [15]хранить в узле CDATA