WEB APP: Клиент - реализованы шаблоны по умолчанию для типовых строковых XML-атрибутов (name, caption, parent)
This commit is contained in:
parent
d8295ccfa3
commit
6d8401b778
@ -66,6 +66,15 @@ const XML_ALWAYS_ARRAY_PATH_PATTERNS = [
|
|||||||
//Типовой постфикс тега для массива (при переводе XML -> JSON)
|
//Типовой постфикс тега для массива (при переводе XML -> JSON)
|
||||||
const XML_ALWAYS_ARRAY_POSTFIX = "__SYSTEM__ARRAY__";
|
const XML_ALWAYS_ARRAY_POSTFIX = "__SYSTEM__ARRAY__";
|
||||||
|
|
||||||
|
//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)
|
||||||
|
const XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [
|
||||||
|
/(.*)XCOLUMNS_DEF.name$/,
|
||||||
|
/(.*)XCOLUMNS_DEF.caption$/,
|
||||||
|
/(.*)XCOLUMNS_DEF.parent$/,
|
||||||
|
/(.*)XGROUPS.name$/,
|
||||||
|
/(.*)XGROUPS.caption$/
|
||||||
|
];
|
||||||
|
|
||||||
//-----------
|
//-----------
|
||||||
//Тело модуля
|
//Тело модуля
|
||||||
//-----------
|
//-----------
|
||||||
@ -102,16 +111,24 @@ const xml2JSON = ({ xmlDoc, isArray, transformTagName, tagValueProcessor, attrib
|
|||||||
parseAttributeValue: true,
|
parseAttributeValue: true,
|
||||||
attributeNamePrefix: ""
|
attributeNamePrefix: ""
|
||||||
};
|
};
|
||||||
if (useDefaultPatterns)
|
if (useDefaultPatterns) {
|
||||||
opts.isArray = (name, jPath, isLeafNode, isAttribute) =>
|
opts.isArray = (name, jPath, isLeafNode, isAttribute) =>
|
||||||
XML_ALWAYS_ARRAY_PATHS.indexOf(jPath) !== -1 ||
|
XML_ALWAYS_ARRAY_PATHS.indexOf(jPath) !== -1 ||
|
||||||
XML_ALWAYS_ARRAY_PATH_PATTERNS.some(pattern => pattern.test(jPath)) ||
|
XML_ALWAYS_ARRAY_PATH_PATTERNS.some(pattern => pattern.test(jPath)) ||
|
||||||
jPath.endsWith(XML_ALWAYS_ARRAY_POSTFIX) ||
|
jPath.endsWith(XML_ALWAYS_ARRAY_POSTFIX) ||
|
||||||
(isArray ? isArray(name, jPath, isLeafNode, isAttribute) : undefined);
|
(isArray ? isArray(name, jPath, isLeafNode, isAttribute) : undefined);
|
||||||
else if (isArray) opts.isArray = isArray;
|
opts.attributeValueProcessor = (name, val, jPath) =>
|
||||||
|
XML_ATTR_ALWAYS_STR_PATH_PATTERNS.some(pattern => pattern.test(`${jPath}.${name}`))
|
||||||
|
? undefined
|
||||||
|
: attributeValueProcessor
|
||||||
|
? attributeValueProcessor(name, val, jPath)
|
||||||
|
: val;
|
||||||
|
} else {
|
||||||
|
if (isArray) opts.isArray = isArray;
|
||||||
|
if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;
|
||||||
|
}
|
||||||
if (transformTagName) opts.transformTagName = transformTagName;
|
if (transformTagName) opts.transformTagName = transformTagName;
|
||||||
if (tagValueProcessor) opts.tagValueProcessor = tagValueProcessor;
|
if (tagValueProcessor) opts.tagValueProcessor = tagValueProcessor;
|
||||||
if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;
|
|
||||||
const parser = new XMLParser(opts);
|
const parser = new XMLParser(opts);
|
||||||
resolve(parser.parse(xmlDoc));
|
resolve(parser.parse(xmlDoc));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user