XML 解码器组

将XML文件处理为日志源,以定义解码器以从XML文件中提取数据。

注意

为XML日志源定义XML解码器组需要了解XML文件的结构和内容、要提取的数据以及存储该数据的字段。 本节提供了您可以为解码器指定的参数的基本描述。您使用任何解码器的方式取决于包含源数据的 XML 文件。

有关 XML 日志源的格式要求信息,请参阅 日志源. 在定义 XML 解码器时如需帮助,请联系 Adobe。

XML 解码器的顶级是解码器组 (XMLDecoderGroup),这是一组用于从特定格式的 XML 文件提取数据的解码器表。如果您的 XML 文件格式各不相同,则必须为每种格式定义一个解码器组。每个解码器组都包含一个或多个解码器表。

下表描述了Tables(表)参数以及定义XML解码器组时必须指定的所有子参数。

参数 描述
表格

解码器组中的每个表都表示一级要从 XML 文件中提取的数据。例如,如果您想要提取有关访客的数据,则需要创建一个解码器表,其中包含要对每个访客提取的信息。您还可以在解码器表内创建解码器表(请参阅 Children(子项))。

向解码器组中添加表

  • 右键单击,然后单击新增 > XMLDecoderTable

Fields(字段)

存储数据的扩展字段(例如 x-trackingid、x-email)。字段中存储的数据由“路径”和/或“运算”子字段确定。

“路径”是结构化的 XML 文件内的字段级别。字段路径对应于定义该字段的表路径。示例包括 tag.tag.tagtag.tag.tag.@attribute。请注意,路径区分大小写。

“运算”应用于指定路径中的每一行以生成输出。可用运算如下:

  • LAST:字段获取路径在 XML 文件中最后一次出现的值。
  • RANDOM:为字段分配随机值。如果您需要生成唯一的 id(例如对于 x-trackingid 字段),则此运算非常有用。
  • INHERIT:定义的字段从父表的对应字段继承其值。
  • "常量":常量必须用引号引住。您可以使用常量运算来检查是否存在特定的路径;如果存在该路径,则为字段分配该常量的值。

向解码器表中添加字段

  • 右键单击字段,然后单击新增 > XMLDecoderField。根据需要定义“字段”、“运算”和“路径”。

路径

解码器表包含其信息的结构化 XML 文件内的级别。对于子 XML 解码器表,路径是相对于父表路径的。请注意,路径区分大小写。

例如,如果 XML 文件包含以下结构:

<访客>

 

...

  

</visitor> 

</logdata>    <p> 则路径为logdata<span class="filepath">.visitor</span>。</p> </td>
Table(表)

此参数的值应该始终为“日志条目”。

注意:在未咨询 Adobe 的情况下,请勿更改此值。

Children(子项)

可选。一个或多个嵌入的解码器表。每个子项都包含上述的 Fields(字段)、Path(路径)和 Table(表)参数。

向解码器表中添加子项

  • 右键单击子项,然后单击新增 > XMLDecoderTable。根据需要定义“字段”、“运算”和“路径”。

若要将 XML 文件用作数据集的日志源,必须定义 XML 解码器组和表以提取要处理到数据集中的信息。在此示例中,您将了解如何为 Web 数据集的示例 XML 日志源定义解码器组和表。

以下XML文件包含有关网站访客的信息,包括Experience CloudID、电子邮件地址、物理地址以及有关访客页面查看次数的信息。

由于我们有一个 XML 文件,因此只需要一个解码器组,我们将该解码器组命名为“Sample XML Format”。此解码器组应用到与此文件具有相同格式的其他任何 XML 文件。若要开始在此解码器组内构建 XML 解码器表,我们必须首先确定要提取哪些信息以及将存储数据的字段。

在此示例中,我们提取有关访客以及与该访客相关的页面查看的信息。为此,我们创建包含访客相关信息的顶级(父)XML 解码器表,以及包含访客页面查看相关信息的嵌入(子)XML 解码器表。

用于父(访客)表的信息如下所示:

  • XML 文件中每个数据行的数据类型标识符。我们使用 VISITOR 作为标识符,以便快速识别与访客(而不是页面查看)相关的数据行。我们可以将此值存储在 x-rowtype 字段中。
  • 访客的 ID,我们将其存储在 x-trackingid 字段中。
  • 访客的电子邮件地址 (contact.email),我们将其存储在 x-email 字段中。
  • 访客的注册状态。如果访客是已注册的用户,我们可以在 x-is-registered 字段中存储值“1”。
  • 路径值为logdata.visitor,表值为Log Entry。 有关这些参数的信息,请参阅上面的 XMLDecoderGroup 表。

用于子(页面查看)表的信息如下所示:

  • XML 文件中每个数据行的数据类型标识符。我们使用 "PAGEVIEW" 作为标识符,以便快速识别与访客的页面查看(而不只是访客)相关的数据行。我们将此值存储在 x-rowtype 字段中。
  • 访客的 ID。此值从父表中继承,并存储在 x-trackingid 字段中。
  • 每次页面查看的时间戳,存储在 x-event-time 字段中。
  • 每次页面查看的 URI,存储在 cs-uri-stem 字段中。
  • “路径”值为 pageview,“表”值为“日志条目”。有关这些参数的信息,请参阅上面的 XMLDecoderGroup 表。

以下屏幕捕获显示了Log Processing Dataset Include文件的一部分,其中包含基于父XML解码器表和子XML解码器表所讨论的结构的示例XML文件的生成XML解码器组。

为示例 XML 文件显示此解码器输出的表如下所示:

x-rowtype cs–uri-stem x-email x-is-registered x-event-time x-tracking-id
VISITOR foo@bar.com 1 1
PAGEVIEW /index.html 2006-01-01 08:00:00 1
页面查看 / 2006-01-01 08:00:30 1

您可以在 Data Workbench 中使用字段查看器界面创建与上面类似的表。有关字段查看器界面的信息,请参阅 数据集配置工具.

使用#value on XML元素读取其属性值

现在,您可以在XML路径中使用​#value​标记来提取XML元素的值。

例如,以前指定的路径为​<Hit><Page name="Home Page" index="20">home.html</Page></Hit>,这样您便无法读取<Page>标记的值。 要读取<Page>标记的值及其属性,可以分别使用Hit.Page.@name和Hit.Page.@index。 您还可以使用​Hit.Page.#value​表达式提取标记的值。

例如,您可以通过在解码器中添加以下字段来读取标记<varValue>的值:

7 = XMLDecoderField: 
Field = string: x-varvalue-name-added 
Operation = string: LAST 
Path = string:  
<b>#value</b> 
Path = string: varValue 
Table = string: Log Entry

同样,您也可以通过在解码器中添加以下字段来读取标记<Rep>的值:

7 = XMLDecoderField: 
Field = string: x-rep-name-added 
Operation = string: LAST 
Path = string: Rep.# 
<b>value</b> 
Path = string: Reps 
Table = string: Log Entry

相反,要读取无属性元素标记的值,可通过在路径中提供“ text”或使用line.text直接读取<line>标记下的<text>标记及其值,具体取决于您构建解码器的方式。

2 = XMLDecoderField: 
Field = string: x-chat-text 
Operation = string: LAST 
Path = string:  
<b>text</b> 
Path = string:  
<b>line</b> 
Table = string: Log Entry

在此页面上