Commit 902cef1d by 施晓雨

临时增加一个SDK的Review版本

parent 7d24de1b
/**
* 检测传入的XPath是否有表的存在,如果没有返回null
* @param {string[]} absolutePaths Xpath绝对路径集合
* @returns {object} 返回对象信息
*/
function checkTableFromXpaths(absolutePaths) {
let rtns = null;
//先找到共同的根以及各路径在共同根下的相对路径
let parent = getCommonParentXPath(absolutePaths);
if (parent == null || parent.length == 0) return rtns;//如果找不到直接返回null
let relativeXpaths = getRelativeXPaths(parent, absolutePaths);//根据相同的根找到绝对路径的相对路径
while (parent.length > 0) {
if (verifyTable(parent, absolutePaths)) break;//如果验证表结构成功,就可以退出了
parent.pop();//向上一级找
relativeXpaths = getRelativeXPaths(parent, absolutePaths);//重新获取相对路径
}
rtns = {
parent: parent,
relativeXpaths: relativeXpaths,
tableData: null
};
return rtns;
}
/**
* 返回多个元素XPath的共同父节点,返回数组以方便向上移动
* @param {string[]} absolutePaths Xpath绝对路径集合
* @returns {string[]} 返回string[]的共同的根的各部分的集合
*/
function getCommonParentXPath(absolutePaths) {
let rtns = null;
if (!absolutePaths || absolutePaths.length === 0) {
return rtns;
}
let splitPaths = absolutePaths.map(path => path.split('/'));// 分割每个路径为组成部分
rtns = [];// 查找公共前缀
for (let i = 0; i < splitPaths[0].length; i++) {
let currentPart = splitPaths[0][i];
if (splitPaths.every(path => path[i] === currentPart)) { // 检查所有路径是否有这个部分
rtns.push(currentPart);
} else {break;}//如果发现不同的,直接就可以退出了
}
return rtns;
}
/**
* 根据共同的父节点,获取各绝对路径的相对路径,这个方法分离开以便复用
* @param {string[]} parentXpath 父节点路径集合
* @param {string[]} absoluteXpaths 绝对路径集合
* @returns {string[]} 返回string[]的相对路径集合
*/
function getRelativeXPaths(parentXpath, absoluteXpaths) {
let rtns = [];
let splitPaths = absolutePaths.map(path => path.split('/'));
splitPaths.map(path => rtns.push(path.slice(parentXpath.length)));
return rtns;
}
/**
* 验证表结构是否正确
* @param {string[]} parentXPath 父节点路径集合
* @param {string[]} relativeXPaths 相对路径集合
* @returns {boolean} 返回true为表结构正确
*/
function verifyTable(parentXPath, relativeXPaths) {
return false;
}
/**
* 根据路径信息获取表内的数据
* @param {string[]} parentXPath 父节点路径集合
* @param {string[]} relativeXPaths 相对路径集合
* @returns {any} 返回表内数据
*/
function getTableData(parentXPath, relativeXPaths) {
let rtns = null;
return rtns;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment