Pobranie danych z XML'a

0
<?xml version="1.0"?>

<db>

<db2013-05-03>
<t1></t1>
<t11></t11>
<t2></t2>
<t22></t22>
<t3></t3>
<t33></t33>
</db2013-05-03>

<db2013-05-01>
<t1>Marcin Zalddddd 111111111</t1>
<t11>Stefan Batory 123456789</t11>
<t2>Mmmm Zzzzz 222222222</t2>
<t22></t22>
<t3></t3>
<t33></t33>
</db2013-05-01>

<db2013-05-02>
<t1></t1>
<t11></t11>
<t2>Marcin Zalsssss 111111111</t2>
<t22></t22>
<t3></t3>
<t33></t33>
</db2013-05-02>

</db>

Klucze z db data pobieram tak:

xml.DocumentElement.ChildNodes[i].LocalName;

ale jak pobrać dane z kluczy zawartych w nim, czyli z t1,t11,t2,t22,t3,t33?

0

jeśli klasa do obsługi xml nie udostępnia takiej operacji to zawsze można zassać plik do StringList'y i samemu wyszukać.

1

@zalespl: dużego doświadczenia z XML nie mam, a z TXmlDocument to już maluteńkie. Ale kombinował bym tak, jak pokazałem poniżej. Działa ok - sprawdzone. Oczywiście wyświetlanie danych sobie dopasuj po swojemu. To tylko przykład pisany na szybko.

//...
uses
  xmldoc, xmlintf;
//...
const
  Xml_FileName = 'D:\test.xml';
var
  I : integer;
  XML : TXMLDocument;
  DBNode, EntryNode : IXMLNode;
begin
  xML := TXMLDocument.Create(Self);
  XML.LoadFromFile(Xml_FileName);
  for I := 0 to XML.DocumentElement.ChildNodes.Count - 1 do
  begin
    DBNode := XML.DocumentElement.ChildNodes[I];
    EntryNode := DBNode.ChildNodes['t2'];
    if EntryNode <> nil then
    begin
      ShowMessage(EntryNode.Text);
    end;
  end;
  XML.Free;
end;

@TLesiu: fajnie, że chcesz pomóc i odpowiadasz. Jednak na przyszłośc zastanów się dobrze co komuś proponujesz. Nie po to pytający chce skorzystać z dobrodziejstw XML'a, aby wczytać go i operować na jego fizycznym tekscie aby uzyskać to co chce. Takie coś było by - według mnie - do zaakceptowania tylko pod WinAPI, gdy nie dysponujemy "obrobionym" modułem, który do parsowania XML'a korzysta tylko z modułu Windows lub innych modułów, które tylko jego używają lub używają innych odnoszących się tylko do Windows. Wtedy pozostaje kombinowanie z funkcjami do uzyskiwania rezultatów na tekstcie, jak choćby Pos, Copy i Delete.

1 użytkowników online, w tym zalogowanych: 0, gości: 1