首先定义moddle descriptor的json文件数据,例如:
{
"name": "Cars",
"uri": "http://cars",
"prefix": "c",
"types": [
{
"name": "Base",
"properties": [
{
"name": "id",
"type": "String",
"isAttr": true
}
]
},
{
"name": "Root",
"superClass": ["Base"],
"properties": [
{
"name": "cars",
"type": "Car",
"isMany": true
}
]
},
{
"name": "Car",
"superClass": ["Base"],
"properties": [
{
"name": "name",
"type": "String",
"isAttr": true,
"default": "No Name"
},
{
"name": "similar",
"type": "Car",
"isMany": true,
"isReference": true
},
{
"name": "engine",
"type": "Engine"
}
]
},
{
"name": "Engine",
"superClass": ["Base"],
"properties": [
{
"name": "power",
"type": "Integer",
"isAttr": true
},
{
"name": "fuelConsumption",
"type": "Integer",
"isAttr": true
}
]
}
]
}
安装相关依赖包moddle,moddle-xml,
import { Moddle } from "moddle";
import { Reader, Writer } from "moddle-xml";
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const carsJSON = require("./car.json");
const model = new Moddle([carsJSON]);
const xml = `<c:Root xmlns:c="http://cars"><c:Car id="Car_1">
<c:Engine power="121" fuelConsumption="10"></c:Engine>
</c:Car>
</c:Root>
`;
const reader = new Reader(model);
const rootHandler = reader.handler("c:Root");
try {
const { rootElement: cars, warnings } = await reader.fromXML(
xml,
rootHandler
);
if (warnings.length) {
console.log("import warnings", warnings);
}
console.log(cars);
} catch (err) {
console.log("import error", err, err.warnings);
}
var cars2 = model.create('c:Root')
cars2.get('cars').push(model.create('c:Car', { power: 10 }))
var options = { format: false, preamble: false }
var writer = new Writer(options)
var xml2 = writer.toXML(cars2);
console.log(xml2)