Работа с XML в Delphi (возврат определенных данных в переменную)

Последние несколько дней я пытался работать с 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 ответа

Решение

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

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

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

Вот ссылка на MSDN для выбора SingleSode: http://msdn.microsoft.com/en-us/library/ms256471(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

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

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

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

Другие вопросы по тегам