Bilinmeyen Yapıda xml dosyası ayırma işlemleri
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Bilinmeyen Yapıda xml dosyası ayırma işlemleri
Merhaba arkadaşlar. Benim yapmaya calıstıgım herkesin burada sundugunun aksine bilinmeyen yapıdaki bir xml dosyasını açıp onun butun node larını okuyup bu node ların içinde var olan items isimleri ve değerlerini okumak ve tabii diğer bir yapıda var olan attribute değerleri içinde bilgi gönderilen dosylardaki attribute isimlerin ve attribute değerlerini de alabilmek idi. Yeni başladıgım xml okuma çalısmalarında hali hazırda 4. kademeye kadar alt node ları okuyup içerisinde bulunan items ve değerlerini ayırabiliyorum(Tabi henüz acemice yazılmıs bir code ile) ama attribute lerin attribute isimlerini bilmeden değerlerini okuma imkani olmadığı gibi attribute isimlerini de nasıl alabileceğim konusunda bir çıkış bulamadım. TXMLdocument bileşeni ile bunu yapmak mümkünmü? ve yapısı bilinmeyen dosyalarıda parse edecek ve içindeki herşeyi documente edecek code örnekleri varmı? İlgilenecek tüm arkadaşlara simdiden tesekkür ederim.
Re: Bilinmeyen Yapıda xml dosyası ayırma işlemleri
Merhaba,
Bildiğim kadarıyla IXMLDocument ile bunu yapamazsınız. Ancak IXMLDOMDocument ile bunu yapmanız mümkün olabilir.
Örnek olması açısından aşağıdaki kodu inceleyebilirsiniz.
Bildiğim kadarıyla IXMLDocument ile bunu yapamazsınız. Ancak IXMLDOMDocument ile bunu yapmanız mümkün olabilir.
Örnek olması açısından aşağıdaki kodu inceleyebilirsiniz.
Kod: Tümünü seç
uses
msxml;
const
TestXML = '<?xml version="1.0" encoding="utf-8" ?>' +
'<items><item Id="814135481" Rank="1">' +
'<a n="Formatted Name" v="Test Project 1"/></item>' +
'<item Id="814135882" Rank="2">' +
'<a n="Formatted Name" v="Test Project 2"/>' + '</item>' +
'<item Id="814135908" Rank="3">' +
'<a n="Formatted Name" v="Test Project 3"/>' +
'</item></items>';
procedure TForm2.FormCreate(Sender: TObject);
var
Xml: IXMLDOMDocument;
ANode: IXMLDOMNode;
I: Integer;
begin
Memo1.Clear();
Memo1.WordWrap := False;
Memo1.Font.Name := 'Consolas';
Memo1.ScrollBars := TScrollStyle.ssBoth;
Xml := CoDOMDocument.Create();
Xml.LoadXml(TestXML);
ANode := Xml.documentElement.childNodes[0];
Memo1.Lines.Add('NodeName: ' + ANode.nodeName + ', NodeValue: ' + VarToStr(ANode.nodeValue));
for I := 0 to ANode.attributes.length-1 do
Memo1.Lines.Add(' AttributeName: ' + ANode.attributes.item[I].nodeName + ', AttributeValue: ' + VarToStr(ANode.attributes.item[I].nodeValue));
end;