对于 AssetBundle,您必须添加WidgetsFlutterBinding.ensureInitialized();
在主类中排队。
这是我的主课,
void main() {
WidgetsFlutterBinding.ensureInitialized();
FetchData a = FetchData();
a.data();
runApp(const MyApp());
}
这是我加载 XML 文件的地方,
class FetchData {
data() async {
print(await rootBundle.loadString("assets/xml_file/belovedskincare.xml"));
}
}
如果要将 XML 文件转换为 JSON,可以使用xml2json 包 https://pub.dev/packages/xml2json.
class FetchData {
data() async {
final xml = await rootBundle.loadString("assets/xml_file/belovedskincare.xml");
Xml2Json xml2json = Xml2Json();
xml2json.parse(xml);
var json = xml2json.toGData();
print(json);
}
}
至于file.readAsString();
,我仍在尝试找出问题所在。
convertXMLtoJSON() async {
File file = File('assets/xml_file/belovedskincare.xml');
Future<String> xml = file.readAsString(); // this is where the error happens
}
您还可以使用本地主机来读取文件(我使用的是XAMPP)。将 XML 文件放入htdocs目录并使用http包 https://pub.dev/packages/http读取文件。
对于 WAMP,请将文件放入www目录。
这是我的代码,
更换本地主机在包含您的 IP 地址的 URL 中。类型ipconfig
在命令提示符中获取您的 IP 地址(IPv4 地址)。
并使用xml2json 包 https://pub.dev/packages/xml2json将 XML 文件转换为 JSON 格式。
final jsonData =
await http.get(Uri.parse('http://localhost/file_name'));
final xml = jsonData.body;
Xml2Json xml2json = Xml2Json();
xml2json.parse(xml);
var json = xml2json.toGData();
print(json);
var response = jsonDecode(jsonEncode(json));
print(response);