Flutter的Plist解析器?
一个支持XML和二进制格式的Plist解析器Flutter插件。
它从头开始为Dart编写了XML和二进制解析器,并且不依赖其他原生库。
这是受到一些库的启发。请查看下面的详细信息。
安装?
dependencies:
plist_parser: "^0.0.1"
用法 ?
import 'package:plist_parser/plist_parser.dart';
import 'dart:io';
const xml = '''
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>string_type</key>
<string>hello plist</string>
<key>int_type</key>
<integer>12345</integer>
<key>double_type</key>
<real>12.345</real>
<key>bool_type_true</key>
<true/>
<key>bool_type_false</key>
<false/>
<key>date_type</key>
<date>2022-02-11T18:27:45Z</date>
<key>data_type</key>
<data>VGVzdCBWYWx1ZQ==</data>
<key>dict_type</key>
<dict>
<key>key1</key>
<string>value1</string>
<key>key2</key>
<integer>2</integer>
<key>long_key_item_name_aaaaa_bbbbb_ccccc_ddddd_eeeee</key>
<string>long_key_item_value_11111_22222_33333_44444_55555</string>
</dict>
<key>array_type</key>
<array>
<string>array item1</string>
<string>array item2</string>
</array>
<key>array_type2</key>
<array>
<string>array2 item1</string>
<dict>
<key>nest_array</key>
<array>
<string>nest_array_item</string>
</array>
<key>nest_dict</key>
<dict>
<key>nest_dict_item</key>
<integer>12345</integer>
</dict>
</dict>
</array>
</dict>
</plist>
''';
void main() {
// parse from xml string
var result = PlistParser().parse(xml);
print(result);
print("int_type: ${result["int_type"]}");
print("array_type[1]: ${result["array_type"][1]}\n");
// parse from binary file sync
filePath = "${Directory.current.path}/example/example_binary.plist";
print("parseBinaryFileSync\n${PlistParser().parseBinaryFileSync(filePath)}\n");
}
输出是这些
// ※ Formatted for readability
{
string_type: hello plist,
int_type: 12345,
double_type: 12.345,
bool_type_true: true,
bool_type_false: false,
date_type: 2022-02-11 18:27:45.000Z,
data_type: Test Value,
dict_type: {
key1: value1,
key2: 2,
long_key_item_name_aaaaa_bbbbb_ccccc_ddddd_eeeee: long_key_item_value_11111_22222_33333_44444_55555
},
array_type: [
array item1,
array item2
],
array_type2: [
array2 item1,
{
nest_array: [nest_array_item],
nest_dict: {
nest_dict_item: 12345
}
}
]
}
int_type: 12345
array_type item2: array item2
parseBinaryFileSync
{array_type2: [array2 item1, {nest_dict: {nest_dict_item: 12345}, nest_array: [nest_array_item]}], date_type: 2022-02-11 18:27:45.000, double_type: 12.345, string_type: hello plist, bool_type_true: false, array_type: [array item1, array item2], bool_type_false: true, dict_type: {key1: value1, key2: 2, long_key_item_name_aaaaa_bbbbb_ccccc_ddddd_eeeee: long_key_item_value_11111_22222_33333_44444_55555}, data_type: Test Value, int_type: 12345}
其他示例存储在 /example/plist_parser_example.dart