Citrix ADC

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>
  • <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 表达式

XPath 和 HTML、XML 或 JSON 表达式