Xml 操作

Xml 类

Xml类表示一个XML文档

  1. var xmlDoc = new Xml("<root/>"); //传入XML字符串,会自动构造
  2. 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节点

  1. var xmlDoc = new Xml("<root/>"); //传入XML字符串,会自动构造
  2. 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结构

  1. var xmlDoc = new Xml("<root/>"); //传入XML字符串,会自动构造
  2. var xmlNode = xmlDoc.findChild("root");
  3. 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()

例子:

  1. function loadXMLString(xmlstr)
  2. {
  3. var xml = new Xml(xmlstr);
  4. var xmlNode = xml.findChild("aaa");
  5. print xmlNode.getAttributeInt("ccc");
  6. print xmlNode.getAttributeInt("ddd");
  7. var xmlNode2 = xml.findChildByPath("aaa/zzz");
  8. print xmlNode2.getValue();
  9. var xmlNode2 = xml.findChildByPath("aaa.zzz",".");
  10. print xmlNode2.getValue();
  11. }
  12. function loadXMLFile()
  13. {
  14. var xml = new Xml();
  15. xml.loadFile(GetRoot() + "aaa.xml");
  16. var xmlNode = xml.findChild("aaa");
  17. print xmlNode.getAttributeInt("ccc");
  18. print xmlNode.getAttributeInt("ddd");
  19. var xmlNode2 = xml.findChildByPath("aaa/zzz");
  20. print xmlNode2.getValue();
  21. var xmlNode2 = xml.findChildByPath("aaa.zzz",".");
  22. print xmlNode2.getValue();
  23. }
  24. function main(parm)
  25. {
  26. var xml = new Xml();
  27. var xmlNode = xml.appendChild("aaa");
  28. xmlNode.addAttribute("ccc",1);
  29. xmlNode.addAttribute("ddd",2);
  30. var xmlNode2 = xmlNode.appendChild("zzz");
  31. xmlNode2.setValue("aaaaaaaaaaaaaaaaaa");
  32. print xml.toXmlString();
  33. xml.saveFile(GetRoot() + "aaa.xml");
  34. loadXMLString(xml.toXmlString());
  35. loadXMLFile();
  36. }

结果:

  1. <?xml version="1.0"?>
  2. <aaa ccc="1" ddd="2">
  3. <zzz>aaaaaaaaaaaaaaaaaa</zzz>
  4. </aaa>
  5. 1
  6. 2
  7. aaaaaaaaaaaaaaaaaa
  8. aaaaaaaaaaaaaaaaaa
  9. 1
  10. 2
  11. aaaaaaaaaaaaaaaaaa
  12. aaaaaaaaaaaaaaaaaa

根目录下aaa.xml内容:

  1. <?xml version="1.0"?>
  2. <aaa ccc="1" ddd="2">
  3. <zzz>aaaaaaaaaaaaaaaaaa</zzz>
  4. </aaa>