delphi xpath delphi-xe txmldocument

delphi - XPath y TXmlDocument



delphi-xe (1)

No puedo encontrar nada en la documentación de TXMLDocument sobre XPath.

Ejemplo de XML, de la demostración de OmniXML XPath:

<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="eng">Harry Potter</title> </book> <book> <title lang="eng">Learning XML</title> </book> <book> <title lang="slo">Z OmniXML v lepso prihodnost</title> <year>2006</year> </book> <book> <title>Kwe sona standwa sam</title> </book> </bookstore>

Intenta algo como esto:

uses XMLDoc, XMLDom, XMLIntf; // From a post in Embarcadero''s Delphi XML forum. function selectNode(xnRoot: IXmlNode; const nodePath: WideString): IXmlNode; var intfSelect : IDomNodeSelect; dnResult : IDomNode; intfDocAccess : IXmlDocumentAccess; doc: TXmlDocument; begin Result := nil; if not Assigned(xnRoot) or not Supports(xnRoot.DOMNode, IDomNodeSelect, intfSelect) then Exit; dnResult := intfSelect.selectNode(nodePath); if Assigned(dnResult) then begin if Supports(xnRoot.OwnerDocument, IXmlDocumentAccess, intfDocAccess) then doc := intfDocAccess.DocumentObject else doc := nil; Result := TXmlNode.Create(dnResult, nil, doc); end; end; var IDoc: IXMLDocument; INode: IXMLNode; begin IDoc := LoadXMLDocument(''./books.xml''); INode := SelectNode(IDoc.DocumentElement,''/bookstore/book[2]/title''); end;

Al igual que un FYI para otros, lo dejo en: OmniXML es compatible con XPath, y tiene una demostración que muestra muy bien cómo usarlo. También es gratuito, viene con la fuente, es compatible con Unicode y tiene un soporte bastante bueno a través de sus foros.

En Delphi XE, ¿es posible usar XPath con un componente TXmlDocument ?

Soy consciente de que puedo usar un enlace tardío para acceder al MSXML2 y luego usar XPath:

XML := CreateOleObject(''MSXML2.DOMDocument.3.0'') ; XML.async := false; XML.SetProperty(''SelectionLanguage'',''XPath'');

Pero quiero saber si TXmlDocument instalado con Delphi XE es compatible con XPath.