当前位置:文档之家› EOS+6.0+基础参考手册_xpath

EOS+6.0+基础参考手册_xpath

Primeton EOS 6.0 基础参考手册目录

目录

第1章模板使用说明1-1 1.1 特别说明1-1

1.2 标题1-2 1.3 图1-2 1.4 表1-2

1.5 并列关系和顺序关系1-3

1.5.1 并列关系1-3

1.5.2 顺序关系1-3

1.6 说明和注意1-4

1.6.1 单行文字1-4

1.6.2 多行文字1-4

1.6.3 表格中的说明1-4 1.7 代码1-5第2章测试标题级别2-1

2.1 标题2 2-1

2.1.1 标题3 2-1

2.2 标题21 2-1

2.2.1 标题31 2-1

2.2.2 标题32 2-1第3章客户端接入错误!未定义书签。

3.1 概述3-1

3.2 相关概念3-1

3.2.1 服务存储库错误!未定义书签。

3.2.2 服务上下文错误!未定义书签。

3.2.3 服务消息处理拦截错误!未定义书签。

3.2.4 用户对象权限验证错误!未定义书签。

3.3 接口及方法说明3-7

3.3.1 包含的类3-7

3.3.2 类的方法3-7

第1章模板使用说明

允许使用的样式都在本章中列出,请不要自定义其他样式,以免影响模板的正

常使用。使用样式的方法为:从样式下拉列表框中选择,如图1-1所示。

图1-1样式使用说明

正文文字统一使用“正文”样式,提供快捷键“F5”。

1.1 特别说明

从其他文档中拷贝粘贴时,请务必选择“仅保留文本”,如图1-2所示。否则

会带入很多不属于本模板的非法样式,并破坏模板中的样式,本人概不负责!

图1-2粘贴请选择仅保留文本

1.2 标题

支持“标题1”~“标题7”,共7级标题,不允许自定义其他标题样式。

更换章(即标题1)时,请插入“分节符”。

1.3 图

贴图(包括界面截图、Visio图等)时,请选中图片,使用“Figure”样式,按

“回车”键后,自动出现“Figure Description”样式的图说明。

图编号会随着“标题1”的变化,重新开始编号。

1.4 表

表格上面可以先使用“Table Description”样式的表说明。表编号会随着“标

题1”的变化,重新开始编号。

插入一个表格后,按以下步骤设置表格样式:

(1) 选中该表格左上角的标记,然后选择“Table”样式,设定整个表格的

样式。

(2) 选中表格的第一行,选择“Table Heading”样式,设定表头的样式。

(3) 选中表格其他行,选择“Table Text”样式,设定表格文字的样式。

举例如表1-1所示。

表1-1表格说明

说明:

更简便的方式是直接拷贝上表,修改内容即可。

1.5 并列关系和顺序关系

1.5.1 并列关系

并列关系表述没有任何顺序,但同属于一个范畴的内容。使用“Item List”样

式,如下:

●并列内容1

●并列内容2

●……

表格中的文字如需表示并列关系,请使用“Item List in Table”样式。如下表所

示。

表1-2表格说明

1.5.2 顺序关系

顺序关系表述有前后关联的内容,一般用于描述操作步骤等,如下:

(1) 步骤1

(2) 步骤2

(3) ……

说明:

默认接续上一个步骤,有时需要重新从(1)开始编号,只需选中需要置为(1)的编

号,右键单击,从弹出菜单中选择“重新开始编号”即可。

表格中的文字如需表示顺序关系,请使用“Item Step in Table”样式。如下表

所示。

表1-3表格说明

1.6 说明和注意

1.6.1 单行文字

对于单行文字的说明或注意,请拷贝如下样式,修改内容即可。头部使用“Notes

Heading”样式,文字使用“Notes Text”样式。建议下面留一个空行。

说明:

更简便的方式是直接拷贝上表,修改内容即可。

注意:

用户安装开发版时,系统会缺省安装JBOSS 3.2.5。开发版不支持其它应用服

务器。

1.6.2 多行文字

对于多行文字的说明或注意,请拷贝如下样式,修改内容即可。头部使用“Notes

Heading”样式,文字使用“Notes Text List”样式。建议下面留一个空行。

说明:

●如果您想成为gocom社区用户,请到https://www.doczj.com/doc/2212548167.html,注册。

●用户选择安装社区版时,系统会缺省安装JBOSS 3.2.5。

注意:

●注意事项1。

●注意事项2。

1.6.3 表格中的说明

表格中的说明请拷贝如下样式。头部使用“Notes Heading in Table”样式,单

行文字使用“Notes Text in Table”样式,多行文字使用“Notes Text List in

Table”样式。

表1-4表格说明

1.7 代码

代码使用“Terminal Display”样式。

Primeton EOS 6.0 基础参考手册第2章测试标题级别

第2章测试标题级别

2.1 标题2

2.1.1 标题3

2.1.1.1 标题4

2.1.1.1.1 标题5

2.1.1.1.1.1 标题6

2.1.1.1.1.1.1 标题7

2.2 标题21

2.2.1 标题31

2.2.2 标题32

2.2.2.1 标题41

2.2.2.2 标题42

2.2.2.2.1 标题51

2.2.2.2.2 标题52

第3章XPath

3.1 概述

XPath提供了访问对象的内容的一组语法,通过该语法,可以遍历访问对象;

这些对象可以以JavaBean,SDO,Map等各种形式存在,也可以是他们的混合形

式。利用xpath语法,屏蔽和统一了这些对象的访问方式。

3.2 相关概念

3.2.1 XPath语法

EOS支持的XPath语法如下:

path ::= '/'? (step '/')* step

step ::= '@'? property

| property '[' index_from_1 ']'

|# ;;如果是DOM节点,取节点的值

| property '.' index_from_0

| reference '['@? attribute '=' value ']'

| ".."

property ::= NCName ;; may be simple or complex type

attribute ::= NCName ;; must be simple type

reference :: NCName ;;

index_from_0 ::= Digits

index_from_1 ::= NotZero (Digits)?

value ::= Literal

Literal ::= '"' [^"]* '"'

| "'" [^']* "'"

NotZero ::= [1-9]

Digits ::= [0-9]+

EOS XPath与SDO XPath的语法有以下差异

●Step不支持".."回溯

●不支持scheme

●Value只支持字符串,不支持数字和布尔值

●支持/#,获取DOM节点的值

举一个对DOM节点值的访问的例子,假设在一个混合对象JavaBean中,有一

个Element类型的名称为elem的DOM对象。该DOM对象如下

zhangsan

那么就可以通过xpath语法’elem/#’获取DOM节点的值”zhangsan”了。

根据上面列出的xpath语法,我们可以看到,除了标准Xpath语法外,EOS的

Xpath语法额外添加了一种下标取值的语法,即‘.[以0开始的下标]’。

“department.0/name”相当于“department[1]/name”。

3.2.2 XPath所支持访问的对象

Xpath支持的访问的对象有以下几种:

●Javabean:普通的java Bean对象

●DataObject:SDO的DataObject对象

●Collection包括数组,List

●Map:Map数据对象

●Document:Document文档对象

●PageContext:Http请求的PageContext对象

●ServletContext:Http请求的ServletContext对象

●HttpServletRequest:Http请求的ServletRequest对象

●HttpSession:Http请求的HttpSession对象

3.2.3 类型映射(type mapping)

在根据xpath创建对象,对对象属性进行赋值的时候,如果不能够从对象的数

据元信息(比如从DataObject的Type中获取的属性,从JavaBean,Map中获

取属性的类型)中得到当前要创建的节点信息,那么就需要根据类型映射获取

该节点的类型。

在根据xpath,对对象进行赋值操作时,如果要动态创建对象或属性,那么

类型映射的规则如下:

例如:

对于xpath和java实现类型的映射

com.primeton.java包下有类AddressType

class AddressType{

private String type;

public void setType(String){

this.type=type;

}

}

XPathLocator locator=XPathLocator.getInstance();

Map typeMapping=new HashMap();

typeMapping.put(“xpath:/property”,”java:com.primeton.java.AddressType”

);

locator.setTypeMappings(typeMapping);

locator.setValue(new HashMap(),”/property/type”,”test”);

XPathLocator locator2=XPathLocator.getInstance();

Map typeMapping2=new HashMap();

typeMapping2.put(“xpath:/property”,”java:com.primeton.java.AddressType

”);

locator2.setTypeMapping(typeMapping2);

locator2.setValue(new HashMap(),”property[1]/type”,”test”);

对于xpath和DataObject实现类型的映射

定义了类型为com.primeton.sdo.AddressType的sdo数据对象,它包含有名称type的属

XPathLocator locator=XPathLocator.getInstance();

Map typeMapping=new HashMap();

typeMapping.put(“xpath:/property”,”sdo:com.primeton.java.AddressType”)

;

locator.setTypeMappings(typeMapping);

locator.setValue(new HashMap(),”/property/type”,”test”);

XPathLocator locator2=XPathLocator.getInstance();

Map typeMapping2=new HashMap();

typeMapping2.put(“xpath:/property”,”sdo:com.primeton.java.AddressType”

);

locator2.setTypeMapping(typeMapping2);

locator2.setValue(new HashMap(),”property[1]/type”,”test”);

3.3 规则和约束

3.3.1 类型映射

设置类型映射时,对于集合类型(List),不支持设置集合的元素类型。

比如类似下面的类型映射是不支持的

Map typeMapping=new HashMap();

typeMapping.put(“xpath:/property”,”java:java.util.ArrayList<

com.primeton.java.AddressType >”)

3.3.2 动态的创建节点

3.3.2.1 节点的父对象为Map结构

当该节点的父对象为Map,且该节点没有指定类型映射,则会为该节点生成

HashMap或者Object数组,具体生成哪种类型,根据xpath表达式语法而定;

当xpath的节点xpath为property[index](其中index从1开始)时,生成

Object数组;否则生成HashMap对象。

XPathLocator locator=XPathLocator.getInstance();

locator.setValue(new HashMap(),”property[1]”,”test”);

等同于

Map root=new HashMap();

Object[] data=new Object[1];

data[0]=”test”;

root.put(“property”,data);

XPathLocator locator2=XPathLocator.getInstance();

locator2.setValue(new HashMap(),”property/subProperty”,”test”);

等同于

Map root=new HashMap();

Map subMap=new HashMap();

subMap.put(“subProperty”,”test”);

root.put(“property”,subMap);

3.3.2.2 节点的父对象为非Map的结构

当需要动态创建的节点的父对象为其他类型,则会根据父对象的元信息,取得

该节点所对应的类型。如果该类型是一个可实例化的对象,就创建对象。否则

就根据类型映射查找该节点对应的类型,创建对象,如果没有查找到,就抛异

定义了这样一个类CompoundClass

class CompoundClass{

private List datas;

public List getDatas(){

return this.datas;

}

public void setDatas(List datas){

this.datas=datas;

}

}

CompoundClass clazz=new CompoundClass();

XPathLocator locator=XPathLocator.getInstance();

locator.setValue(new HashMap(),”property[1]”,”test”);

等同于

Map root=new HashMap();

Object[] data=new Object[1];

data[0]=”test”;

root.put(“property”,data);

XPathLocator locator2=XPathLocator.getInstance();

locator2.setValue(new HashMap(),”property/subProperty”,”test”);

等同于

Map root=new HashMap();

Map subMap=new HashMap();

subMap.put(“subProperty”,”test”);

root.put(“property”,subMap);

3.3.3 对DOM进行访问

3.3.3.1 对Node的xpath数据读取约束

对Node进行xpath访问的时候,Document或者Element的根的名称被忽略。

比如JavaBean中有一个名称为dom的Document对象,名称为elem的

Element对象。

class JavaBean{

private Document dom;

private Element elem;

publc Document getDom(){

return dom;

}

public Element getElem(){

return elem;

}

}

其中dom和elem属性都是下面的结构

那么访问Document 的order节点的xpath为/dom/order

访问Element的order节点的xpath为/elem/order

3.3.3.2 对Node的xpath操作

对Node进行操作时, XPathLocator 中的addValue , setValue,getValues都

有特定的语义。相关的语义结合下面的例子说明:

addValue

数据:

xxxx

yyyyy

场景一: addValue("/Account/Address[id='1']", "jjjj");

结果:

xxxxjjjj
<--!把Address[id='1']

这个节点看作一个List节点,为这个节点增加一个子节点TextNode="jjjj"-->

yyyyy

场景二: addValue("/Account/Order, customerNode);

结果:

xxxx

yyyyy

场景三:setValue("/Account/Order, newOrderNode)

xxxx

yyyyy

场景四:List nodes=getValues(“Account/Address”)

获取到了Account/Address的结点列表

3.4 接口及方法说明

3.4.1 包含的类

表3-1xpath包含的类

3.4.2 类的方法

3.4.2.1 com.eos.data.xpath.XPathLocator

3.4.2.1.1 类的说明

使用XPath语法对各种混合对象进行取值和设置的类。

3.4.2.1.2 类的方法

表3-2com.eos.data.xpath.XPathLocator类的方法

相关主题
文本预览
相关文档 最新文档