program XMLXPath; {$APPTYPE CONSOLE} uses ActiveX, MSXML; const XML = '' + '
' + ' ' + ' Invisibility Cream' + ' 14.50' + ' Makes you invisible' + ' ' + ' ' + ' Levitation Salve' + ' 23.99' + ' Levitate yourself for up to 3 hours per application' + ' ' + '
' + '
' + ' ' + ' Blork and Freen Instameal' + ' 4.95' + ' A tasty meal in a tablet; just add water' + ' ' + ' ' + ' Grob winglets' + ' 3.56' + ' Tender winglets of Grob. Just add water' + ' ' + '
' + '
'; var i: Integer; s: string; lXMLDoc: IXMLDOMDocument2; lNodeList: IXMLDOMNodeList; lNode: IXMLDOMNode; lItemNames: array of string; begin CoInitialize(nil); lXMLDoc := CoDOMDocument.Create; lXMLDoc.setProperty('SelectionLanguage', 'XPath'); lXMLDoc.loadXML(XML); Writeln('First item node:'); lNode := lXMLDoc.selectNodes('//item')[0]; Writeln(lNode.xml); Writeln(''); lNodeList := lXMLDoc.selectNodes('//price'); for i := 0 to lNodeList.length - 1 do Writeln('Price = ' + lNodeList[i].text); Writeln(''); lNodeList := lXMLDoc.selectNodes('//item/name'); SetLength(lItemNames, lNodeList.length); for i := 0 to lNodeList.length - 1 do lItemNames[i] := lNodeList[i].text; for s in lItemNames do Writeln('Item name = ' + s); end.