aardio 文档

aardio 范例: MSXML 读写

XPath 语法速查

//MSXML 读写

import console;
import web.msxml

xmlstr =/*<?xml version="1.0" encoding="utf-8"?>
<国家 id="china">
    <省份>
        <省份详情 id="shanxi">陕西</省份详情>
        <地区>
            <市 id="xian">西安</市>
            <市 id="xianyang">咸阳</市>
        </地区>
    </省份>
    <省份>
        <省份详情 id="hunan">湖南</省份详情>
        <地区>
            <市 id="changsha">长沙</市>
            <市 id="zhuzhou">株洲</市>
        </地区>
    </省份>
</国家>*/

//解析 XML
var xmlDoc = web.msxml(xmlstr);

//可转换为字符串,下面代码等价于 console.log( tostring(xmlDoc.xml) ); 
console.log( xmlDoc.xml ); 

//XPath 查询
var eles = xmlDoc.selectNodes("/国家/省份[2]/地区[1]/市[1]");
//XPath 语法速查: https://quickref.me/zh-CN/docs/xpath.html

//长度
console.log("XPath返回数组长度",eles.length)
console.log("XPath返回节点文本",eles[0].text)   

//按条件查询节点
qNodes = xmlDoc.queryNodes( tagName="市";text ="西安" ) 
console.log( qNodes.text ); 

//eachNode() 参数一可选指定tagName,参数二可选指定父节点
for(k,xnode in xmlDoc.eachNode( "省份") ){ 
    for(k,xnode in xmlDoc.eachNode( "省份详情",xnode) ){ 
        console.log( "省份详情 Id: " ,  xnode.attributes(0).nodeValue  );
        console.log( "省份详情 value: " ,xnode.text  );
    } 
    for(k,xnode in xmlDoc.eachNode( "地区",xnode ) ){ 
        for(k,xnode in xmlDoc.eachNode( "市",xnode ) ){
            console.log( "   市 Id: ", xnode.attributes(0).nodeValue );
            console.log( "   市 value: ", xnode.text ); 
        }
    }
}

var root = xmlDoc.documentElement

//修改国家下属第一个字节点的文本内容
//注意 aardio数组下标从1开始,而com数组下标从零开始
//下面两句的作用是一样的
root.childNodes(0).Text="testitem" 

//COM 对象可在属性名字前加上set前缀、并以函数形式调用属性方法
root.childNodes(0).setText("testitem2") 

//下面这几句作用是一样的
var text = root.childNodes(0).Text;
var text = root.childNodes(0).getText() //在属性名字前加上get前缀、并以函数形式调用属性方法
var text = root.childNodes.item(0).getText() 
console.log( text)

//更简单的方法
console.log( xmlDoc.市(0).text  ); 

//保存xml文件
xmlDoc.save( "/result.xmlDoc" )

import process;
process.execute("notepad.exe",xmlDoc.url )
Markdown 格式