这里整理了主流编程语言处理XML和JSON的常用库与基本用法。
为了方便快速查阅和对比,现将相关信息汇总如下:
XML处理库
· C
· 常用库:Expat
· 类型/特点:SAX流式解析
· 简要用法示例:
// 创建解析器并注册元素开始回调函数
XML_Parser parser = XML_ParserCreate(NULL);
XML_SetElementHandler(parser, startElement, endElement);
// 分段解析XML数据
XML_Parse(parser, xmlData, dataLen, isFinal);
XML_ParserFree(parser);
· C++
· 常用库:pugixml, TinyXML-2
· 类型/特点:DOM解析
· 简要用法示例 (pugixml):
pugi::xml_document doc;
doc.load_file("file.xml");
std::string value = doc.child("node").child_value();
· C#
· 常用库:System.Xml.Linq (LINQ to XML)
· 类型/特点:DOM解析, LINQ查询
· 简要用法示例:
XDocument doc = XDocument.Load("file.xml");
var names = doc.Descendants("Name").Select(e => e.Value);
· Python
· 常用库:xml.etree.ElementTree, lxml
· 类型/特点:DOM解析, XPath支持(lxml)
· 简要用法示例 (ElementTree):
import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()
for child in root:
print(child.tag, child.attrib)
· Java
· 常用库:JAXB, DOM/SAX Parser
· 类型/特点:数据绑定, 标准API
· 简要用法示例 (JAXB):
JAXBContext context = JAXBContext.newInstance(Book.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Book book = (Book) unmarshaller.unmarshal(new File("book.xml"));
· MATLAB
· 常用库:readstruct / writestruct 函数
· 类型/特点:映射为结构体
· 简要用法示例 (读取):
% 自动检测XML或JSON文件并读取为结构体
data = readstruct('data.xml');
· VB / VBScript
· 常用库:MSXML
· 类型/特点:DOM解析
· 简要用法示例 (VBScript):
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.Load("file.xml")
Set node = xmlDoc.SelectSingleNode("//root/element")
· JavaScript (Node.js)
· 常用库:xml2js
· 类型/特点:转换为JS对象
· 简要用法示例:
const parseString = require('xml2js').parseString;
parseString(xmlData, (err, result) => {
console.log(result.root.element);
});
· Delphi
· 常用库:TXMLDocument 组件
· 类型/特点:DOM解析
· 简要用法示例:
var
XMLDoc: IXMLDocument;
Node: IXMLNode;
begin
XMLDoc := LoadXMLDocument('file.xml');
Node := XMLDoc.DocumentElement.ChildNodes['NodeName'];
end;
· Lua
· 常用库:LuaXML
· 类型/特点:DOM解析
· 简要用法示例:
local xml = require("LuaXML")
local xfile = xml.load("file.xml")
print(xfile.child[1].name)
JSON处理库
· C
· 常用库:cJSON, jansson
· 类型/特点:轻量级, DOM解析
· 简要用法示例 (cJSON):
cJSON *root = cJSON_Parse(json_string);
cJSON *item = cJSON_GetObjectItem(root, "key");
cJSON_Delete(root);
· C++
· 常用库:jsoncpp, nlohmann/json
· 类型/特点:DOM解析, 易于使用
· 简要用法示例 (jsoncpp):
Json::Value root;
root["name"] = "John";
Json::FastWriter writer;
std::string json = writer.write(root);
· C#
· 常用库:Newtonsoft.Json (Json.NET), System.Text.Json
· 类型/特点:功能全面, 高性能(后者)
· 简要用法示例 (Json.NET):
string json = JsonConvert.SerializeObject(obj);
var obj = JsonConvert.DeserializeObject<MyClass>(json);
· Python
· 常用库:json(标准库)
· 类型/特点:标准库, 简单高效
· 简要用法示例:
import json
data = json.loads('{"name": "John"}')
json_str = json.dumps(data)
· Java
· 常用库:Jackson, Gson
· 类型/特点:高性能, 数据绑定
· 简要用法示例 (Jackson):
ObjectMapper mapper = new ObjectMapper();
MyValue obj = mapper.readValue(jsonString, MyValue.class);
String jsonOut = mapper.writeValueAsString(obj);
· MATLAB
· 常用库:readstruct / writestruct 函数, jsonencode / jsondecode
· 类型/特点:映射为结构体或对象
· 简要用法示例 (编码解码):
data = struct('name','John','age',30);
jsonText = jsonencode(data);
decodedData = jsondecode(jsonText);
· VB / VBScript
· 常用库:VB-JSON 库(外部库), ScriptControl(Eval)
· 类型/特点:解析为字典/对象
· 简要用法示例 (使用外部VB-JSON库):
' 需先引用库
Set json = JsonConverter.ParseJson(jsonText)
value = json("key")
· JavaScript
· 常用库:JSON(内置对象)
· 类型/特点:原生支持
· 简要用法示例:
let obj = JSON.parse('{"name":"John"}');
let jsonStr = JSON.stringify(obj);
· Delphi
· 常用库:System.JSON 单元, SuperObject
· 类型/特点:内置, 第三方库功能更强
· 简要用法示例 (System.JSON):
var
LJSONValue: TJSONValue;
begin
LJSONValue := TJSONObject.ParseJSONValue(jsonString);
// ... 使用 LJSONValue
LJSONValue.Free;
end;
· Lua
· 常用库:dkjson, cjson
· 类型/特点:纯Lua实现, C绑定(高效)
· 简要用法示例 (dkjson):
local json = require("dkjson")
local tbl, pos, err = json.decode(jsonString)
local jsonStr = json.encode(tbl)
💡 核心要点与选择建议
根据表格中的信息,你还可以从下面几点来考量:
· 首选内置/标准库:对于Python(json)、JavaScript(JSON)、C#(System.Text.Json)、Java(Jackson或Gson通常被视作事实标准)和MATLAB(readstruct),应优先使用其成熟的内置或行业标准库。
· 关注解析模型:
· DOM模型(如C#的XDocument、Python的ElementTree)将整个文档读入内存树,便于随机访问和修改,适合文件不大或需要频繁操作的场景。
· 流式/事件模型(如C的Expat)边读边处理,内存占用极低,适合处理超大文件或实时数据流。
· 数据绑定(如Java的JAXB、C#的Json.NET)将XML/JSON节点直接映射为编程语言的对象(类实例),最符合面向对象编程的习惯,适合数据结构固定的场景。
· 特殊环境考量:
· 资源受限环境(如嵌入式C):选择Expat(XML)或cJSON(JSON)这类轻量级、高性能的库。
· 旧环境或脚本(如VBScript):处理XML可依赖系统自带的MSXML;处理JSON通常需要借助外部组件,如VB-JSON库。
🔍 更深入学习的路径
这些库通常功能丰富,要深入了解,你可以:
- 查阅官方文档:这是最权威的信息源。
- 在代码托管平台(如GitHub)搜索库名:查看源码、示例和社区讨论。
- 搜索特定用法:如“[库名] 示例”、“[库名] 如何解析特定格式”。
1801

被折叠的 条评论
为什么被折叠?



