Browse through the topics in the contents list to the right.
Selects nodes and attributes from a standard xpath expression.
Returns | The XML source of the selection. If the content was set to be modified the previous value will be returned. |
doc | an xml object returned by xpath_load() |
step | a valid XPath 2.0 expression |
set | (optional)text content to replace the current selection |
Since multiple return values are seperated with a comma, any found within the text content will be entity escaped as ,.
To get or set the text content of a node use the text function, e.g. /root/node/text()
; this behaviour is always assumed within predicates.
For performance reasons count()
and last()
do not update with the creation of new nodes so you may need to alter the results accordingly.
Only the following functions are currently supported:
Function | Description | Example |
---|---|---|
text() |
Returns the text content. | version := xpath(feed, "/rss/@version/text()") |
remove() |
Removes the entire selection. | new := xpath(feed, "/rss/channel/item[1]/remove()") |
position() |
Gives the position of the currently selected object. | top := xpath(feed, "/rss/channel/item[position()<=3]") |
last() |
Returns the last found object. | oldest := xpath(feed, "/rss/channel/item/last()/pubDate") |
count() |
Returns the total number of selected elements. | entries := xpath(feed, "/rss/channel/item/count()") |
#Include xpath.ahk ; include functions (only required if it is not in your standard library)
; parsing documents:
xml := xpath_load("books.xml") ; load an XML document
titles := xpath(xml, "/bookstore/books[price>35]/title/text()") ; get book titles with a cost greater than 35
; combining functions and using variables:
firstShow := xpath(xml := xpath_load("listings.xml"), "/tv/programme[@starts>=" . A_Now . "]/title[1]/text()")
x = <root><element var="test"/></root>
xpath_load(x) ; XML content can be loaded in-place directly
xpath(x, "element/text()", "new content")
MsgBox, % xpath_save(x) ; show the new source without having to save it
; creating documents:
xpath(feed, "/rss[+1]/@version", "2.0") ; create 'rss' node with attribute 'version'
xpath(feed, "/rss/channel[+1]/title[+1]", "second") ; rss > channel > title
xpath(feed, "/rss/channel/title[-1]", "first") ; '-1' puts this node before the last
xpath_save("\Inetpub\wwwroot\test.xml", feed) ; write XML
Saves an XML document to file or returns the source.
Returns | False if there was an error in saving the document, true otherwise. If the src parameter is left blank the source code of the document is returned instead. |
doc | an xml object returned by xpath_load() |
src | (optional)a path to a file where the XML document should be saved; if the file already exists it will be replaced |
Loads an XML document.
Returns | False if there was an error in loading the document, true otherwise. |
doc | a reference to the loaded XML file as a variable, to be used in other functions |
src | (optional)the document to load, this can be a file name or a string, if omitted the first paramter is used as the source |