其它格式化器
Version 23.4.8843
Version 23.4.8843
其它格式化器
以下是与解析 XML 和 CSV 的运算器一起使用的格式化器列表。
xpath(value)
xpath 格式化器可以在调用有 XML DOM 可用的 XML 运算器时使用。xmlDOMSearch 和 xmlDOMGet 运算器用于解析 XML 文档,而 xpath 格式化器是 DOM 对象的格式化器,其功能与其它格式化器一样,是从 XML 文档中生成值。xpath 格式化器返回 XML 文档的当前 XPath 位置。
- value:可选值,相对 XPath 字符串,用于查找相关的 XML 值。
xpath 示例
在以下代码片段中,XML 文档是在 ArcScript 的内存中定义的。
<arc:set attr="text">
<root>
<A>遥遥领先</A>
<A>
<B>
<C>继续领先</C>
</B>
</A>
<A>
<B>永远领先</B>
</A>
</root>
</arc:set>
在以下代码片段中,调用 xmlDOMSearch 操作并从示例 XML 文档中显示 XPath 格式化器。
<arc:call op="xmlDOMSearch?xpath=/root/A">
当前 XPath 是 [xpath],'B' 元素值为 [xpath(B) | empty("未指定")]
</arc:call>
当针对前面的 XML 文档运行时,此代码将显示以下输出。
当前 XPath 是 /root/A[1],'B' 元素值为 未指定
当前 XPath 是 /root/A[2],'B' 元素值为 未指定
当前 XPath 是 /root/A[3],'B' 元素值为 永远领先
在前面的示例中,XPath 格式化器迭代显示的三个 A 元素。 但仅显示最终 B 元素中的 “永远领先”,因为 [xpath(B)] 会忽略其他元素中的值。
xpathcount(value)
xpathcount 格式化器与 xpath 格式化器非常相似,不同之处在于它返回与所提供的 XPath 匹配的元素的计数。 它可以在对具有可用 XML DOM 的 XML 操作的调用中使用。 可以使用 xmlDOMSearch 和 xmlDOMGet 运算器来解析 XML 文档,而 xpathcount 格式化器是 DOM 对象的格式化器,其功能与其他格式化器类似,通过从 XML 文档生成计数来实现。
- value: 可选值,相对 XPath 字符串,用于查找相关的 XML 元素。
xpathcount 示例
<arc:set attr="xml.xpath" value="/Items/Cars/Subaru" />
<arc:set attr="xml.text">
<Items>
<Cars>
<Subaru>
<Color>Blue</Color>
<Year>2017</Year>
</Subaru>
<Honda>
<Color>Red</Color>
</Honda>
</Cars>
</Items>
</arc:set>
<arc:call op="xmlDOMSearch" in="xml" out="result">
<!-- xpathcount 是 ArcScript 中的上下文相关函数。 如果 XML 文档加载到
search,xpathcount 返回与提供的 xpath 匹配的元素数量的计数。 -->
<arc:set attr="output.Data" value="[xpathcount('/Items/Cars/*/Color')]" />
</arc:call>
<arc:set attr="output.filename" value="test.txt" />
<arc:push item="output" />
运行此代码时,它会返回“2”作为输出。
xsubtree(value)
可以使用 xsubtree 从嵌套的 XML 结构中解析 XML 树。
xsubtree 示例
在下面的示例 XML 文档中,/Event/Attendees
下有三个条目。
<arc:set attr="xml.text">
<Event>
<Subject>Meeting</Subject>
<Attendees>
<User>
<Code>1</Code>
<Name>TEST1</Name>
</User>
<User>
<Code>2</Code>
<Name>TEST2</Name>
</User>
<User>
<Code>3</Code>
<Name>TEST3</Name>
</User>
</Attendees>
</Event>
</arc:set>
<arc:set attr="xml.xpath" value="/Event/Attendees" />
<arc:call op="xmlDOMSearch" in="xml">
[xsubtree(.)] <!-- 在括号中插入所需的 XPath -->
</arc:call>
xsubtree
命令中的 .
字符指示脚本使用当前的 xpath。在本例中,路径是 /Event/Attendees
,它返回所有三个条目:
<User>
<Code>1</Code>
<Name>TEST1</Name>
</User>
<User>
<Code>2</Code>
<Name>TEST2</Name>
</User>
<User>
<Code>3</Code>
<Name>TEST3</Name>
</User>
如果你只想显示在 /Event/Attendees
xpath 中第二次出现的 User
子树,你可以用 xsubtree(User\[2\])
替换该命令。这样做的结果将是:
<User>
<Code>2</Code>
<Name>TEST2</Name>
</User>
csv(value)
从 CSV 文件加载数据后,可以使用 csv 格式化器。csvListRecords 运算器用于解析 CSV 文件,csv 格式化器是 CSV 数据的格式化器,其功能与其它格式化器一样,从 CSV 文档中生成值。
- value:CSV 列标题的字符串,用于查找该列的值。请注意,如果 CSV 文件没有标题,如果 “requireheader” 属性被设置为 false,则可以通过通用索引(c1, c2, c3, …)访问列。
csv 示例
在以下片段中,ArcScript 在内存中定义了一个 CSV 文档。
<arc:set attr="data" value=
"column1,column2,column3
entry1,entry2,entry3
entry4,entry5,entry6"
/>
在下面的例子中,调用 “csvListRecords” 运算器,从示例 CSV 文档中显示 CSV 格式。
<arc:call op="csvListRecords">
Row [_index] values: [csv('column1')], [csv('column2')], [csv('column3')]
</arc:call>
这段代码将显示以下输出:
Row 1 values: entry1, entry2, entry3
Row 2 values: entry4, entry5, entry6
[myitem.value | csvescape()]
csvescape 格式化器从匹配值的列中返回 CSV 数据,每个元素以单独的结果输出。
csvescape Example
在下面的例子中,csv 格式化器和 csvescape 选项都是从 CSV 文档示例中输出的。
<arc:call op="csvListRecords">
Standard output: [csv('column1')], [csv('column2')], [csv('column3')]
Output with csvescape(): [csv('column1') | csvescape()], [csv('column2') | csvescape()], [csv('column3') | csvescape()]
</arc:call>
这段代码将在 CSV 标题下的第一行显示以下输出。
Standard output: entry1, entry2, entry3
Output with csvescape(): "entry1", "entry2", "entry3"