anchor.diff:      return obj;
     }
   
  +  /// 解析节点里的属性值
  +  void _parseAttrs(dynamic node, dynamic obj) {
  +    node.attributes.forEach((attr) {
  +      obj!['"_${attr.name.local}"'] = '"${attr.value}"';
  +    });
  +  }
  +
  +  /// 解析XmlText节点
  +  void _parseXmlTextNode(dynamic node, dynamic obj, dynamic nodeName) {
  +    final sanitisedNodeData =
  +        _Xml2JsonUtils.escapeTextForJson(node.children[0].text);
  +    var nodeData = '"$sanitisedNodeData"';
  +    // print('nodeData----------->$nodeData');
  +    if (nodeData.isEmpty) {
  +      nodeData = '';
  +    }
  +    var attrs = node.attributes;
  +    // 如果开始节点里有属性
  +    if (attrs.isNotEmpty) {
  +      var objTemp = <dynamic, dynamic>{};
  +      _parseAttrs(node, objTemp);
  +      objTemp['"value"'] = nodeData;
  +      if (obj[nodeName] is Map) {
  +        var jsonCopy = json.decode(json.encode(obj[nodeName]));
  +        obj[nodeName] = <dynamic>[jsonCopy, objTemp];
  +      } else if (obj[nodeName] is List) {
  +        obj[nodeName].add(objTemp);
  +      } else {
  +        obj[nodeName] = objTemp;
  +      }
  +    } else {
  +      if (obj[nodeName] is String) {
  +        obj[nodeName] = <dynamic>[obj[nodeName], nodeData];
  +      } else if (obj[nodeName] is List) {
  +        obj[nodeName].add(nodeData);
  +      } else {
  +        obj[nodeName] = nodeData;
  +      }
  +    }
  +  }
  +
     /// Transformer function
     String transform(XmlDocument? xmlNode) {
       Map<dynamic, dynamic>? json;
  
positive.code:               nodeData = '';
              }
              obj[nodeName] = nodeData;
            } else {
              obj[nodeName] = <dynamic, dynamic>{};
              obj = obj[nodeName];
            }
          } else {
            /* No children, empty element */
  
negative.code:       } else {
          if (node.children.isNotEmpty) {
            if (node.children[0] is XmlText) {
              _parseXmlTextNode(node, obj, nodeName);
            } else if (node.children[0] is XmlCDATA) {
              final sanitisedNodeData =
                  _Xml2JsonUtils.escapeTextForJson(node.children[0].text);
  