gpt4 book ai didi

xml - 如何将 xml 文件导入 dart 对象

转载 作者:行者123 更新时间:2023-12-02 18:59:17 26 4
gpt4 key购买 nike

我正在尝试使用 xml 包将 c# XmlSerializer 导出的 xml 文件导入到 dart 对象但我所有的导入尝试都失败了。

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfViewReads xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ViewReads>
<CounterAccount>7e7386db-ae4e-47f8-a473-8a5534b8b421</CounterAccount>
<ParentCounter>00000000-0000-0000-0000-000000000000</ParentCounter>
<CounterGuid>88165f87-113b-4503-bd95-01cfc778cf0e</CounterGuid>
<CounterID>354</CounterID>
<AccountName>يحي العامر</AccountName>
<AreaName>مربع الشارع العام وغزه</AreaName>
<AddressDesc>منطقه الوء الاخضر</AddressDesc>
<Phone>771707009</Phone>
<FazName>سنجل فاز</FazName>
<Balance>865.0000</Balance>
<LastRead>7332.00</LastRead>
</ViewReads>
<ViewReads>
<CounterAccount>46e2bacc-644f-47fb-abe7-6589f880667e</CounterAccount>
<ParentCounter>00000000-0000-0000-0000-000000000000</ParentCounter>
<CounterGuid>2d2f1a40-9dcf-4a3c-9fd2-081d3be83aaa</CounterGuid>
<CounterID>2052</CounterID>
<AccountName>كمال محمد علي ثامر</AccountName>
<AreaName>مربع الشارع العام وغزه</AreaName>
<AddressDesc>خلف كوافير السلطانه</AddressDesc>
<Phone>771363922</Phone>
<FazName>سنجل فاز</FazName>
<Balance>1560.0000</Balance>
<LastRead>84.00</LastRead>
<UserGuid>00000000-0000-0000-0000-000000000000</UserGuid>
</ViewReads>
</ArrayOfViewReads>

这是我使用 VSCode 生成的 fromJson() 方法从 dart 导入代码:

  final file = File('C:\\Users\\SALMAN\\Desktop\\2021_1_19_559.xml');
final document = XmlDocument.parse(file.readAsStringSync());

document.children.forEach((e) {
var v = ViewRead.fromJson(e.toString());
});

这是我尝试运行代码后的错误:

Unhandled exception:
FormatException: Unexpected character (at character 1)
<?xml version="1.0" encoding="utf-8"?>
^

#0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404:5)
#1 _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1271:9)
#2 _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:936:22)
#3 _parseJson (dart:convert-patch/convert_patch.dart:40:10)
#4 JsonDecoder.convert (dart:convert/json.dart:505:36)
#5 JsonCodec.decode (dart:convert/json.dart:156:41)
#6 new ViewRead.fromJson (file:///C:/Users/SALMAN/.IntelliJIdea2019.1/dart/bin/dart.dart:170:70)
#7 main.<anonymous closure> (file:///C:/Users/SALMAN/.IntelliJIdea2019.1/dart/bin/dart.dart:16:22)
#8 List.forEach (dart:core-patch/growable_array.dart:313:8)
#9 _DelegatingIterableBase.forEach (package:collection/src/wrappers.dart:52:45)
#10 main (file:///C:/Users/SALMAN/.IntelliJIdea2019.1/dart/bin/dart.dart:15:21)
#11 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#12 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

最佳答案

以下示例说明了如何使用来自以下位置的 xml 包解析此 XML: https://pub.dev/packages/xml

import 'package:xml/xml.dart';

const xml = '''
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfViewReads xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ViewReads>
<CounterAccount>7e7386db-ae4e-47f8-a473-8a5534b8b421</CounterAccount>
<ParentCounter>00000000-0000-0000-0000-000000000000</ParentCounter>
<CounterGuid>88165f87-113b-4503-bd95-01cfc778cf0e</CounterGuid>
<CounterID>354</CounterID>
<AccountName>يحي العامر</AccountName>
<AreaName>مربع الشارع العام وغزه</AreaName>
<AddressDesc>منطقه الوء الاخضر</AddressDesc>
<Phone>771707009</Phone>
<FazName>سنجل فاز</FazName>
<Balance>865.0000</Balance>
<LastRead>7332.00</LastRead>
</ViewReads>
<ViewReads>
<CounterAccount>46e2bacc-644f-47fb-abe7-6589f880667e</CounterAccount>
<ParentCounter>00000000-0000-0000-0000-000000000000</ParentCounter>
<CounterGuid>2d2f1a40-9dcf-4a3c-9fd2-081d3be83aaa</CounterGuid>
<CounterID>2052</CounterID>
<AccountName>كمال محمد علي ثامر</AccountName>
<AreaName>مربع الشارع العام وغزه</AreaName>
<AddressDesc>خلف كوافير السلطانه</AddressDesc>
<Phone>771363922</Phone>
<FazName>سنجل فاز</FazName>
<Balance>1560.0000</Balance>
<LastRead>84.00</LastRead>
<UserGuid>00000000-0000-0000-0000-000000000000</UserGuid>
</ViewReads>
</ArrayOfViewReads>
''';

class ViewReads {
final String counterAccount;
final String parentCounter;
final String counterGuid;
final int counterID;
final String accountName;
final String areaName;
final String addressDesc;
final String phone;
final String fazName;
final double balance;
final double lastRead;
final String userGuid;

ViewReads(
this.counterAccount,
this.parentCounter,
this.counterGuid,
this.counterID,
this.accountName,
this.areaName,
this.addressDesc,
this.phone,
this.fazName,
this.balance,
this.lastRead,
this.userGuid);

factory ViewReads.fromXmlElement(XmlElement xmlElement) => ViewReads(
xmlElement.findElements('CounterAccount').single.text,
xmlElement.findElements('ParentCounter').single.text,
xmlElement.findElements('CounterGuid').single.text,
int.parse(xmlElement.findElements('CounterID').single.text),
xmlElement.findElements('AccountName').single.text,
xmlElement.findElements('AreaName').single.text,
xmlElement.findElements('AddressDesc').single.text,
xmlElement.findElements('Phone').single.text,
xmlElement.findElements('FazName').single.text,
double.parse(xmlElement.findElements('Balance').single.text),
double.parse(xmlElement.findElements('LastRead').single.text),
_firstTextOrNull(xmlElement.findElements('UserGuid')));

static String _firstTextOrNull(Iterable<XmlElement> xmlElements) =>
xmlElements.isEmpty ? null : xmlElements.single.text;

@override
String toString() {
return 'ViewReads{counterAccount: $counterAccount, '
'parentCounter: $parentCounter, '
'counterGuid: $counterGuid, '
'counterID: $counterID, '
'accountName: $accountName, '
'areaName: $areaName, '
'addressDesc: $addressDesc, '
'phone: $phone, '
'fazName: $fazName, '
'balance: $balance, '
'lastRead: $lastRead, '
'userGuid: $userGuid}';
}
}

void main() {
final document = XmlDocument.parse(xml);

final listOfViewReads = document
.findAllElements('ViewReads')
.map((xmlElement) => ViewReads.fromXmlElement(xmlElement))
.toList();

listOfViewReads.forEach(print);
// ViewReads{counterAccount: 7e7386db-ae4e-47f8-a473-8a5534b8b421, parentCounter: 00000000-0000-0000-0000-000000000000, counterGuid: 88165f87-113b-4503-bd95-01cfc778cf0e, counterID: 354, accountName: يحي العامر, areaName: مربع الشارع العام وغزه, addressDesc: منطقه الوء الاخضر, phone: 771707009, fazName: سنجل فاز, balance: 865.0, lastRead: 7332.0, userGuid: null}
// ViewReads{counterAccount: 46e2bacc-644f-47fb-abe7-6589f880667e, parentCounter: 00000000-0000-0000-0000-000000000000, counterGuid: 2d2f1a40-9dcf-4a3c-9fd2-081d3be83aaa, counterID: 2052, accountName: كمال محمد علي ثامر, areaName: مربع الشارع العام وغزه, addressDesc: خلف كوافير السلطانه, phone: 771363922, fazName: سنجل فاز, balance: 1560.0, lastRead: 84.0, userGuid: 00000000-0000-0000-0000-000000000000}
}

关于xml - 如何将 xml 文件导入 dart 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65799906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com