Работа с XML в Delphi (возврат определенных данных в переменную) - PullRequest
3 голосов
/ 27 августа 2010

Последние несколько дней я пытался работать с Delphi 2010 и MSXML, я новичок в экстремальных ситуациях и мне нужно немного указаний.

var
    MemoryStream: TMemoryStream;
    XMLPath: String;
    sName: String;
    XMLDoc: variant;
    doc: TStringList;
begin
  //unrelated code
  // Create XML File to hard disk
    begin
        MemoryStream := TMemoryStream.Create;

        IdHTTP1.get('http://somewebsite' + , MemoryStream);
        MemoryStream.Position := 0;
        MemoryStream.SaveToFile('data.xml');
        MemoryStream.Free;

    end;
    // Load XML file for data display

    doc:=TStringList.Create;
    doc.LoadFromFile('data.xml');

    XMLDoc := CreateOleObject('Msxml2.DOMDocument.6.0');
    XMLDoc.async := false;
    XMLDoc.LoadXML(doc.Text);

Как видите, я могу загрузить данные в XML-файл на жестком диске, затем я загружаю этот файл в DomDocument. С этого момента я застрял ... Я хочу использовать эти данные как набор записей в ADO (например, SomeVariable: = rs.Fields.Item ('DesiredData'). Value). Я провел некоторые исследования и прочитал несколько методов. Однако я не могу понять это. Я знаю, что это должно быть что-то тривиальное, я просто недостаточно далеко, чтобы понять это.

Кажется, есть много хороших примеров о том, как записать в файл XML, но нет ни одного о том, как использовать данные.

Ответы [ 2 ]

5 голосов
/ 27 августа 2010

Я думаю, вы могли бы кое-что сделать с этим в следующих строках:

someNode := XMLDoc.selectSingleNode('//route/to/node');
str := someNode.text;

Параметр для selectSingleNode, по сути, является выражением XPath, поэтому вы можете запрашивать узлы атрибутов, например: //route/to/node/@attrib

Вот ссылка MSDN на selectSingleNode: http://msdn.microsoft.com/en-us/library/ms757846(v=VS.85).aspx а вот синтаксис XPath: http://msdn.microsoft.com/en-us/library/ms256471(v=VS.85).aspx

Кроме того, я могу указать вам на хорошую библиотеку XML для манипуляции XML от Delphi, которая также совместима с MSXML, но вам не нужно напрямую использовать варианты: http://www.omnixml.com/

И гораздо лучший подход, если ваш XML мало что меняет, - это использовать мастер связывания данных XML, который в основном создает полную объектную модель из XML или XSD (он позволяет создавать или читать XML так же просто, как создать составной объект, создав необходимые классы и методы): http://www.youtube.com/watch?v=4D78MG4CaAI&feature=player_embedded

1 голос
/ 27 августа 2010

Если вы хотите использовать свой XML как контейнер данных (например, базу данных), SimpleStorage, вероятно, то, что вы ищете.Вы можете найти его здесь:

http://www.cromis.net/blog/downloads/simplestorage/

Он использует OmniXML в качестве анализатора XML.С SimpleStorage очень просто запрашивать и манипулировать данными внутри XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...