LoadDomDocumentXPath
Ukázka načtení DOM dokumentu z XML souboru pomocí XPath
Popis
Obsah načítaného XML souboru je nasledující<?xml version="1.0"?> <request> <method>GET</method> <path>/request</path> <query>param=value</query> <headers> <header name="Content-Type">text/plain</header> <header name="Accept">*/*</header> <header name="Cache-Control">no-cache</header> <header name="Host">localhost:8080</header> <header name="Accept-Encoding">gzip, deflate, br</header> <header name="Connection">keep-alive</header> <header name="Content-Length">12</header> </headers> <content>SGVsbG8gV29ybGQh</content> </request>Skript načte DOM dokument z XML souboru a pomocí XPath vypíše následující.
- Obsah elementů "method" a "path"
- Obsah elementu "header" , který má hodnotou "Host" v atributu "name"
declare function LoadBase64FromFile dll "ActualDocument" (string): string declare function DomCreateDocument dll "ScriptEx" (integer, string, string, integer): integer declare procedure DomFree dll "ScriptEx" (var integer) declare function DomGetIntegerProp dll "ScriptEx" (integer, string): integer declare function DomGetStringProp dll "ScriptEx" (integer, string): string declare procedure DomSetStringProp dll "ScriptEx" (integer, string, string) declare function DomEvaluate dll "ScriptEx" (integer, string, integer, integer, integer, integer): integer declare function DomSnapshotItem dll "ScriptEx" (integer, integer): integer script LoadDomDocumentXPath(): boolean var Base64: string TheDocument: integer XPathResult: integer I: integer Node: integer S: string HostNode: integer Host: string begin Base64 := LoadBase64FromFile("c:\Temp\Request.xml") TheDocument := DomCreateDocument(0, "", "", 0) DomSetStringProp(TheDocument, "Base64", Base64) XPathResult := DomEvaluate(TheDocument, "/request/method/node() | /request/path/node()", 0, 0, 0, 0) for I := 0 to DomGetIntegerProp(XPathResult, "SnapshotLength") - 1 do Node := DomSnapshotItem(XPathResult, I) S := DomGetStringProp(Node, "NodeValue") write(S) end XPathResult := DomEvaluate(TheDocument, "/request/headers/header[@name=""Host""]/node()", 0, 0, 0, XPathResult) HostNode := DomGetIntegerProp(XPathResult, "SingleNodeValue") Host := DomGetStringProp(HostNode, "NodeValue") write("Host: " + Host) DomFree(TheDocument) result := true end