Xml 操作
Xml 类
Xml类表示一个XML文档
var xmlDoc = new Xml("<root/>"); //传入XML字符串,会自动构造
var xmlDoc2 = new Xml(); //不传值则会构造一个新的XML文档
函数 | 描述 | 参数 | 返回值 | 用法 |
---|---|---|---|---|
loadFile(path) | 从文件加载XML | path:xml绝对路径 | true为加载成功 | xmlDoc.load("e:/test.xml") |
findChild(name) | 查找子节点,只找一层 | name:节点名称 | 节点XmlNode对象 | var xmlNode = xmlDoc.findChild("root") |
findChildByPath(path,delim) | 根据路径查找子节点 | path:节点路径 delim:分隔符 delim不写默认是"/" | 节点XmlNode对象 | var xmlNode = xmlDoc.findChildByPath("root/aaa")var xmlNode = xmlDoc.findChildByPath("root.aaa",".") |
appendChild(name) | 在末尾添加一个节点 | name:节点名称 | 新增节点XmlNode对象 | var xmlNode = xmlDoc.appendChild("root1") |
prependChild(name) | 在最前面添加一个节点 | name:节点名称 | 新增节点XmlNode对象 | var xmlNode = xmlDoc.prependChild("root1") |
insertChildAfter(name,xmlNode) | 在xmlNode后面添加一个节点 | name:节点名称 xmlNode:参考的节点对象 | 新增节点XmlNode对象 | var newXmlNode = xmlDoc.insertChildAfter("root1",xmlNode) |
insertChildBefore(name,xmlNode) | 在xmlNode前面添加一个节点 | name:节点名称 xmlNode:参考的节点对象 | 新增节点XmlNode对象 | var newXmlNode = xmlDoc.insertChildBefore("root1",xmlNode) |
removeChild(name) | 删除节点 | name:节点名称 | 无 | xmlDoc.removeChild("root1") |
removeChild(xmlNode) | 删除节点 | xmlNode:参考的节点对象 | 无 | xmlDoc.removeChild(xmlNode) |
appendXmlString(xmlString) | 附加一段xml文本 | xmlString:xml格式文本 | 无 | xmlDoc.appendXmlString("ttt") |
firstChild() | 获取第一个节点 | 无 | 节点XmlNode对象 | xmlDoc.firstChild() |
lastChild() | 获取最后一个节点 | 无 | 节点XmlNode对象 | xmlDoc.lastChild() |
saveFile(path) | 保存XML文档 | path:xml路径 | 无 | xmlDoc.saveFile("e:/test.xml") |
toXmlString() | 保存成xml格式的字符串 | 无 | XML字符串 | var xmlStr = xmlDoc.toXmlString() |
XmlNode 类
XmlNode类表示一个XML节点
var xmlDoc = new Xml("<root/>"); //传入XML字符串,会自动构造
var node = xmlDoc.findChild("root");
函数 | 描述 | 参数 | 返回值 | 用法 |
---|---|---|---|---|
findChild(name) | 查找子节点,只找一层 | name:节点名称 | 节点XmlNode对象 | var newXmlNode = node.findChild("root") |
findChildByPath(path,delim) | 根据路径查找子节点 | path:节点路径 delim:分隔符 delim不写默认是"/" | 节点XmlNode对象 | var newXmlNode = node.findChildByPath("root/aaa")var newXmlNode = node.findChildByPath("root.aaa",".") |
appendChild(name) | 在末尾添加一个节点 | name:节点名称 | 新增节点XmlNode对象 | var newXmlNode = node.appendChild("root1") |
prependChild(name) | 在最前面添加一个节点 | name:节点名称 | 新增节点XmlNode对象 | var newXmlNode = node.prependChild("root1") |
insertChildAfter(name,xmlNode) | 在xmlNode后面添加一个节点 | name:节点名称 xmlNode:参考的节点对象 | 新增节点XmlNode对象 | var newXmlNode = node.insertChildAfter("root1",xmlNode) |
insertChildBefore(name,xmlNode) | 在xmlNode前面添加一个节点 | name:节点名称 xmlNode:参考的节点对象 | 新增节点XmlNode对象 | var newXmlNode = node.insertChildBefore("root1",xmlNode) |
removeChild(name) | 删除节点 | name:节点名称 | 无 | node.removeChild("root1") |
removeChild(xmlNode) | 删除节点 | xmlNode:参考的节点对象 | 无 | node.removeChild(xmlNode) |
appendXmlString(xmlString) | 附加一段xml文本 | xmlString:xml格式文本 | 无 | node.appendXmlString("ttt") |
firstChild() | 获取第一个节点 | 无 | 节点XmlNode对象 | var newXmlNode = node.firstChild() |
lastChild() | 获取最后一个节点 | 无 | 节点XmlNode对象 | var newXmlNode = node.lastChild() |
nextChild() | 获取自己的下一个兄弟节点 | 无 | 无 | var newXmlNode = node.nextChild() |
getValue() | 获取节点标签中间的文本 | 无 | 文本内容 | var str = node.getValue() |
setValue(value,cdata) | 设置标签中间的文本 | value:文本内容 cdata:bool类型,是否是CDATA格式,不写默认不是CDATA | 文本内容 | node.setValue("aaa")node.setValue("aaa",true) |
getAttributeInt(name) | 获取字段内容,转整型 | name:字段名称 | 字段内容 | var ivalue = node.getAttributeInt("aaa") |
getAttributeUInt(name) | 获取字段内容,转无符号整型 | name:字段名称 | 字段内容 | var ivalue = node.getAttributeUInt("aaa") |
getAttributeFloat(name) | 获取字段内容,转浮点型 | name:字段名称 | 字段内容 | var fvalue = node.getAttributeFloat("aaa") |
getAttributeString(name) | 获取字段文本内容 | name:字段名称 | 字段内容 | var str = node.getAttributeString("aaa") |
addAttribute(name,value) | 添加一个字段 | name:字段名称,字符串 value:内容,任意类型 | 无 | node.addAttribute("aaa",111)node.addAttribute("aaa","111") |
removeAttribute(name) | 删除一个字段 | name:字段名称 | 无 | node.removeAttribute("aaa") |
getAttribute(name) | 获取字段XmlAttribute类对象 | name:字段名称 | XmlAttribute类对象 | var attr = node.getAttribute("aaa") |
firstAttribute() | 获取第一个XmlAttribute类对象 | 无 | XmlAttribute类对象 | node.firstAttribute() |
lastAttribute() | 获取末尾的XmlAttribute类对象 | 无 | XmlAttribute类对象 | node.lastAttribute() |
XmlAttribute 类
XmlAttribute类表示节点标签里的key-value结构
var xmlDoc = new Xml("<root/>"); //传入XML字符串,会自动构造
var xmlNode = xmlDoc.findChild("root");
var xmlAttr = xmlNode.getAttribute("aaa");
函数 | 描述 | 参数 | 返回值 | 用法 |
---|---|---|---|---|
setValue(value) | 设置value值 | value:任意类型 | 无 | xmlAttr.setValue("ttt") |
setName(name) | 设置name值 | name:节点名称 | 无 | xmlAttr.setName("aaa2") |
name() | 获取name值 | 无 | 字符串 | var str = xmlAttr.name() |
value() | 获取value值 | 无 | 字符串 | var str = xmlAttr.value() |
next() | 获取下一个XmlAttribute对象 | 无 | XmlAttribute类对象 | var newXmlAttr = xmlAttr.next() |
asInt() | 获取value值,转整型 | 无 | 整型 | var ivalue = xmlAttr.asInt() |
asUInt() | 获取value值,转无符号整型 | 无 | 无符号整型 | var ivalue = xmlAttr.asUInt() |
asFloat() | 获取value值,转浮点型 | 无 | 浮点型 | var fvalue = xmlAttr.asFloat() |
例子:
function loadXMLString(xmlstr)
{
var xml = new Xml(xmlstr);
var xmlNode = xml.findChild("aaa");
print xmlNode.getAttributeInt("ccc");
print xmlNode.getAttributeInt("ddd");
var xmlNode2 = xml.findChildByPath("aaa/zzz");
print xmlNode2.getValue();
var xmlNode2 = xml.findChildByPath("aaa.zzz",".");
print xmlNode2.getValue();
}
function loadXMLFile()
{
var xml = new Xml();
xml.loadFile(GetRoot() + "aaa.xml");
var xmlNode = xml.findChild("aaa");
print xmlNode.getAttributeInt("ccc");
print xmlNode.getAttributeInt("ddd");
var xmlNode2 = xml.findChildByPath("aaa/zzz");
print xmlNode2.getValue();
var xmlNode2 = xml.findChildByPath("aaa.zzz",".");
print xmlNode2.getValue();
}
function main(parm)
{
var xml = new Xml();
var xmlNode = xml.appendChild("aaa");
xmlNode.addAttribute("ccc",1);
xmlNode.addAttribute("ddd",2);
var xmlNode2 = xmlNode.appendChild("zzz");
xmlNode2.setValue("aaaaaaaaaaaaaaaaaa");
print xml.toXmlString();
xml.saveFile(GetRoot() + "aaa.xml");
loadXMLString(xml.toXmlString());
loadXMLFile();
}
结果:
<?xml version="1.0"?>
<aaa ccc="1" ddd="2">
<zzz>aaaaaaaaaaaaaaaaaa</zzz>
</aaa>
1
2
aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaa
1
2
aaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaa
根目录下aaa.xml内容:
<?xml version="1.0"?>
<aaa ccc="1" ddd="2">
<zzz>aaaaaaaaaaaaaaaaaa</zzz>
</aaa>