Bilinmeyen Yapıda xml dosyası ayırma işlemleri

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aegean
Üye
Mesajlar: 2
Kayıt: 24 Tem 2019 09:32

Bilinmeyen Yapıda xml dosyası ayırma işlemleri

Mesaj gönderen aegean »

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.
ertank
Üye
Mesajlar: 1414
Kayıt: 12 Eyl 2015 12:45

Re: Bilinmeyen Yapıda xml dosyası ayırma işlemleri

Mesaj gönderen ertank »

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.

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;
Cevapla