Browse Source

调整显示名称为全名

master
hejl 2 months ago
parent
commit
e1195a5f2e
  1. 89
      win_text_editor/lib/modules/template_parser/controllers/template_parser_controller.dart

89
win_text_editor/lib/modules/template_parser/controllers/template_parser_controller.dart

@ -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);
}
@ -92,50 +93,56 @@ class TemplateParserController extends BaseContentController { @@ -92,50 +93,56 @@ class TemplateParserController extends BaseContentController {
Logger().debug('开始解析XML,根元素: ${document.rootElement.name}');
_treeNodes = _buildTreeNodes(document.rootElement, document.rootElement.localName, depth: 0);
// templateItems
_templateItems = _parseAllNodeValues(document);
// templateItems
_templateItems = _parseAllNodeValues(document);
notifyListeners();
}
List<TemplateItem> _parseAllNodeValues(xml.XmlDocument document) {
final items = <TemplateItem>[];
int id = 0;
//
void traverse(xml.XmlElement element, String currentPath) {
// 1.
for (final attr in element.attributes) {
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);
if (textNodes.isNotEmpty) {
items.add(TemplateItem(
id: id++,
content: textNodes.first.text,
xPath: currentPath,
value: textNodes.first.text,
nodeType: NodeType.text,
));
}
// 3.
for (final child in element.childElements) {
traverse(child, '$currentPath/${child.name.local}');
final items = <TemplateItem>[];
int id = 0;
//
void traverse(xml.XmlElement element, String currentPath) {
// 1.
for (final attr in element.attributes) {
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,
);
if (textNodes.isNotEmpty) {
items.add(
TemplateItem(
id: id++,
content: textNodes.first.text,
xPath: currentPath,
value: textNodes.first.text,
nodeType: NodeType.text,
),
);
}
// 3.
for (final child in element.childElements) {
traverse(child, '$currentPath/${child.name.local}');
}
}
traverse(document.rootElement, document.rootElement.localName);
return items;
}
traverse(document.rootElement, document.rootElement.localName);
return items;
}
List<TemplateNode> _buildTreeNodes(
xml.XmlElement element,
@ -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,
@ -218,7 +225,7 @@ class TemplateParserController extends BaseContentController { @@ -218,7 +225,7 @@ class TemplateParserController extends BaseContentController {
void traverse(TemplateNode node) {
if (node.isChecked) {
selectedNodes.add(node);
}
}
for (var child in node.children) {
traverse(child);
}
@ -230,4 +237,4 @@ class TemplateParserController extends BaseContentController { @@ -230,4 +237,4 @@ class TemplateParserController extends BaseContentController {
return selectedNodes;
}
}
}

Loading…
Cancel
Save