XPath 和 HTML、XML 或 JSON 表达式
高级策略基础结构支持用于评估和检索 HTML、XML 和 JavaScript 对象表示法 (JSON) 文件中的数据的表达式。这使您能够在 HTML、XML 或 JSON 文档中查找特定节点,确定文件中是否存在节点,在 XML 上下文中找到节点(例如,具有特定父节点或具有给定值的特定属性的节点),并返回这些节点的内容。此外,您可以在重写表达式中使用 XPath 表达式。
XPath 的高级策略表达式实现包括指定 HTML 或 XML 文本的高级策略表达式前缀(如“HTTP.REQ.BOTY”),以及将 XPath 表达式作为其参数的 XPATH 运算符。
HTML 文件基本上是标签和文本元素的自由格式集合。您可以使用 XPATH_HTML 运算符(该运算符将 XPath 表达式作为其参数)来处理 HTML 文件。JSON 文件是名称/值对的集合或值的有序列表。您可以使用 XPATH_JSON 运算符(该运算符将 XPath 表达式作为其参数)来处理 JSON 文件。
-
<text>.XPATH(xpathex):
对 XML 文件进行操作并返回布尔值。
例如,如果一个名为“创建者”的节点存在于 XML 文件的前 1000 个字节内的节点“Book”下,则以下表达式返回布尔值 TRUE。
HTTP.REQ.BODY(1000).XPATH(xp%boolean(//Book/creator)%)参数:
xpathex - XPath 布尔表达式
-
<text>.XPATH(xpathex):
在 XML 文件上操作并返回数据类型的值“double。“
例如,如果字符串位于 XML 文件的前 1000 个字节中,则以下表达式将字符串“36”(价格值)转换为数据类型“double”的值:
HTTP.REQ.BODY(1000).XPATH(xp%number(/Book/price)%)参数:
Xpathex-XPath 数字表达式
示例:
<Book> <creator> <Person> <name>Milton</name> </Person> </creator> <title>Paradise Lost</title> </Book> <!--NeedCopy--> -
<text>.XPATH(xpathex):
对 XML 文件进行操作并返回节点集或字符串。通过使用标准 XPath 字符串转换例程将节点集转换为相应的字符串。
例如,以下表达式在正文的前 1000 个字节中选择由“/book/Creator”(节点集)封闭的所有节点:
HTTP.REQ.BODY(1000).XPATH(xp%/Book/creator%)参数:
xpathex - XPath 表达式
-
<text>.XPATH_HTML(xpathex)
操作 HTML 文件并返回文本值。
例如,如果在前 1000 个字节中找到
<title\></title\>标题 HTML 元素,以下表达式对 HTML 文件进行操作,并返回标签中包含的文本:HTTP.REQ.BODY(1000).XPATH_HTML(xp%/html/head/title%)参数:
Xpathex-XPath 文本表达式
-
<text>.XPATH_HTML_WITH_MARKUP(xpathex)
对 HTML 文件进行操作并返回一个字符串,该字符串包含文档的整个选定部分,包括诸如包含封闭元素标签之类的标记。
以下表达式对 HTML 文件进行操作,并选择 <\title> 标记中的所有内容,包括标记。
HTTP.REQ.BODY(1000).XPATH_HTML_WITH_MARKUP( xp%/html/head/title%)表达式选择的 HTML 正文部分将标记为进一步处理。
参数:
xpathex - XPath 表达式
-
<text>.XPATH_JSON(xpathex)
对 JSON 文件进行操作并返回布尔值。
例如,请考虑以下 JSON 文件:
{ "Book":{ "creator":{ "person":{ "name":’<name>’ } }, "title":’<title>’ } }
以下表达式对 JSON 文件运行,如果 JSON 文件包含一个名为“创建者”的节点,其父节点在前 1000 个字节中为“Book”,则返回布尔值 TRUE:
HTTP.REQ.BODY(1000).XPATH_JSON(xp%boolean(/Book/creator)%)参数:
xpathex - XPath 布尔表达式
-
<text>.XPATH_JSON(xpathex)
在 JSON 文件上操作并返回数据类型的值“double。“
例如,请考虑以下 JSON 文件:
{ "Book":{ "creator":{ "person":{ "name":’<name>’ } }, "title":’<title>’, "price":"36" } }
以下表达式对 JSON 文件运行,并将字符串“36” 转换为数据类型“double”的值(如果字符串存在于 JSON 文件的前 1000 个字节中)。
HTTP.REQ.BODY(1000).XPATH_JSON(xp%number(/Book/price)%)参数:
Xpathex-XPath 数字表达式
-
<text>.XPATH_JSON(xpathex)
操作 JSON 文件并返回节点集或字符串。通过使用标准 XPath 字符串转换例程将节点集转换为相应的字符串。
例如,请考虑以下 JSON 文件:
{ "Book":{ "creator":{ "person":{ "name":’<name>’ } }, "title":’<title>’ } }
以下表达式选择 JSON 文件正文前 1000 个字节中由 “/Book”(节点集)括起来的所有节点,并返回相应的字符串值,即”<name><title>":
HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Book%)参数:
xpathex - XPath 表达式
-
<text>.XPATH_JSON_WITH_MARKUP(xpathex)
对 XML 文件进行操作并返回一个字符串,该字符串包含结果节点文档的整个部分,包括诸如包含封闭元素标签之类的标记。
例如,请考虑以下 JSON 文件:
{"Book":{ "creator":{ "person":{ "name":’<name>’ } }, "title":’<title>’ } }
以下表达式对 JSON 文件进行操作,并在正文的前 1000 个字节中选择由“/book/Creator”封闭的所有节点,即“创建者:{人:{name: <name> ‘}}。“
HTTP.REQ.BODY(1000).XPATH_JSON_WITH_MARKUP(xp%/Book/creator%)由表达式选择的 JSON 正文部分将标记为进一步处理。
参数:
xpathex - XPath 表达式
-
<text>.XPATH_WITH_MARKUP(xpathex):
对 XML 文件进行操作并返回一个字符串,该字符串包含结果节点文档的整个部分,包括诸如包含封闭元素标签之类的标记。
例如,以下表达式对 XML 文件进行操作,并在正文的前 1000 个字节中选择由“/book/Creator”封闭的所有节点。
HTTP.REQ.BODY(1000).XPATH_WITH_MARKUP(xp%/Book/creator%)由表达式选择的 JSON 正文部分将标记为进一步处理。
参数:
xpathex - XPath 表达式