|
|
|
@ -61,6 +61,7 @@ class TemplateParserController extends BaseContentController {
@@ -61,6 +61,7 @@ class TemplateParserController extends BaseContentController {
|
|
|
|
|
traverse(child); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (var node in _treeNodes) { |
|
|
|
|
traverse(node); |
|
|
|
|
} |
|
|
|
@ -106,25 +107,31 @@ class TemplateParserController extends BaseContentController {
@@ -106,25 +107,31 @@ class TemplateParserController extends BaseContentController {
|
|
|
|
|
void traverse(xml.XmlElement element, String currentPath) { |
|
|
|
|
// 1. 添加当前元素的所有属性值 |
|
|
|
|
for (final attr in element.attributes) { |
|
|
|
|
items.add(TemplateItem( |
|
|
|
|
items.add( |
|
|
|
|
TemplateItem( |
|
|
|
|
id: id++, |
|
|
|
|
content: attr.value, |
|
|
|
|
xPath: '$currentPath/@${attr.name.local}', |
|
|
|
|
value: attr.value, |
|
|
|
|
nodeType: NodeType.attribute, |
|
|
|
|
)); |
|
|
|
|
), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 2. 添加当前元素的文本内容(如果有) |
|
|
|
|
final textNodes = element.children.whereType<xml.XmlText>().where((t) => t.text.trim().isNotEmpty); |
|
|
|
|
final textNodes = element.children.whereType<xml.XmlText>().where( |
|
|
|
|
(t) => t.text.trim().isNotEmpty, |
|
|
|
|
); |
|
|
|
|
if (textNodes.isNotEmpty) { |
|
|
|
|
items.add(TemplateItem( |
|
|
|
|
items.add( |
|
|
|
|
TemplateItem( |
|
|
|
|
id: id++, |
|
|
|
|
content: textNodes.first.text, |
|
|
|
|
xPath: currentPath, |
|
|
|
|
value: textNodes.first.text, |
|
|
|
|
nodeType: NodeType.text, |
|
|
|
|
)); |
|
|
|
|
), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 3. 递归处理子元素 |
|
|
|
@ -145,7 +152,7 @@ class TemplateParserController extends BaseContentController {
@@ -145,7 +152,7 @@ class TemplateParserController extends BaseContentController {
|
|
|
|
|
}) { |
|
|
|
|
final node = TemplateNode( |
|
|
|
|
path: path, |
|
|
|
|
name: element.name.local, |
|
|
|
|
name: element.qualifiedName, |
|
|
|
|
children: [], |
|
|
|
|
depth: depth, |
|
|
|
|
isExpanded: depth < 5, // 默认展开前两层 |
|
|
|
@ -159,7 +166,7 @@ class TemplateParserController extends BaseContentController {
@@ -159,7 +166,7 @@ class TemplateParserController extends BaseContentController {
|
|
|
|
|
element.attributes.map( |
|
|
|
|
(attr) => TemplateNode( |
|
|
|
|
path: '$path/@${attr.name.local}', |
|
|
|
|
name: '@${attr.name.local}', |
|
|
|
|
name: '@${attr.qualifiedName}', |
|
|
|
|
children: [], |
|
|
|
|
depth: depth + 1, |
|
|
|
|
isAttribute: true, |
|
|
|
|