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

Вниз

парсим xml с помощью msxml_tlb.pas   Найти похожие ветки 

 
xmlBeginner   (2005-12-01 13:28) [0]

Есть подобный xml-файл (test.xml):
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<bk kod="3377">
<tick period="107" codpl="453" bill="2" sum="1200"/>
<tick period="107" codpl="879" bill="3" sum="1300"/>
</bk>
</root>

Нужно достать из него числовые данные.
Из первой строки с числами все достается ок,

Обрабатываем его так:
Procedure TForm1.Button1Click(Sender: Tobject);
var coDoc : CoDOMDocument;
Doc : IXMLDOMDocument;
r : IXMLDOMElement;
Node : iXMLDOMNode;
xm : Ixmldomnamednodemap;
s1 : string;

begin
Doc := coDoc.Create;
Doc.Set_async(false);
Doc.load("c:\test.xml");
r:=Doc.Get_documentElement;
Node:= r.SelectSingleNode("//tick");
xm:=Node.attributes;
s1:="";

Node:=xm.GetNamedItem("period");
s1:=s1+Node.text+" ";
Node:=xm.GetNamedItem("codpl");
s1:=s1+Node.text+" ";
Node:=xm.GetNamedItem("bill");
s1:=s1+Node.text+" ";
Node:=xm.GetNamedItem("sum");
s1:=s1+Node.text;
end;

Получили // s1 = "107 453 2 1200"

Как перейти ко второй строчке?


 
VirEx ©   (2005-12-03 19:28) [1]

парсить XML документы можно множеством способов (в JavaScript делая объект xml parsera с помощью COM технологии, можно сделать шаблон xsl, можно парсить хоть в php если установлено соответственное расширение, хотя в PHP 5.1.0 это встроенно в ядро, кстати мой сайт http://winconsul.kladovka.net.ru генерится из XML документов :) и на нём же мой проект в котором плагин Options использует XML парсер :) ), я недавно отписывался в http://www.inetlinks.realsofts.com/forum/viewtopic.php?t=173&sid=886c642b9ee59f8af3d84b59eabc6163 по этому поводу, а в данном случае вот такой пример:
(кстати этот парсер является COM объектом поэтому я покажу два метода, с COM технологией и обычный метод)
1) парсим с помощью методов msxml парсера:
uses msxml;
...
var
 CoDoc: CoDOMDocument;
 XMLDoc:DOMDocument;
 MainNode         : IXMLDOMElement;
 Items:IXMLDOMNodeList;
 i:integer;
begin
XMLDoc:=CoDoc.Create;
XMLDoc.async:=false;
XMLDoc.load("test.xml");
MainNode:=XMLDoc.documentElement; //главный узел root
Items:=MainNode.selectNodes("tick");//получаем все объекты с одинаковым именем tick (массив)
i:=1;
while (i<=Items.length-1) do begin
//title:=Items[i].selectSingleNode("title").text; если бы было так: <tick><title>sometext</title></tick> то значение было бы sometext
Items[i] //- вот пожалуйста делай с i-ым элементом что хочешь :)
inc(i);
end;
end;

uses comobj;
...
var
 XMLDoc:variant;
 MainNode         : variant;
 Items:variant;
 i:integer;
begin
XMLDoc:=CreateOleObject("Microsoft.XMLDOM");
XMLDoc.async:=false;
XMLDoc.load("test.xml");
MainNode:=XMLDoc.documentElement; //главный узел root
Items:=MainNode.selectNodes("tick");//получаем все объекты с одинаковым именем tick (массив)
i:=1;
while (i<=Items.length-1) do begin
//title:=Items[i].selectSingleNode("title").text; если бы было так: <tick><title>sometext</title></tick> то значение было бы sometext
Items[i] //- вот пожалуйста делай с i-ым элементом что хочешь :)
inc(i);
end;
end;



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

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

Наверх





Память: 0.46 MB
Время: 0.013 c
2-1141062648
redlord
2006-02-27 20:50
2006.03.19
message+ Tthread


15-1141096201
SkyRanger
2006-02-28 06:10
2006.03.19
Рекламма


2-1141574369
Ventures
2006-03-05 18:59
2006.03.19
Как открыть файл.


2-1141069682
ctudent
2006-02-27 22:48
2006.03.19
dll и ini файл


1-1139856622
Дубинка
2006-02-13 21:50
2006.03.19
Эмуляция клика





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский