Работа с 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.