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 文件包含以下结构:

<访客(&g)

;nbsp;

...

 

</访客>

</logdata>    <p> 则路径为logdata<span class="filepath">.访客</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”。
  • Path值为logdata.visitor,Table值为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 文件显示此解码器输出的表如下所示:

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

您可以在 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

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now