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

Loading…
Cancel
Save