//读取xml
//演示读取xml文件

import com

xmlstr =/*<?xml version="1.0" encoding="gb2312"?>
<国家 id="china">
    <省份>
        <省份详情 id="shanxi">陕西</省份详情>
        <地区>
            <市 id="xian">西安</市>
            <市 id="xianyang">咸阳</市>
        </地区>
    </省份>
    <省份>
        <省份详情 id="hunan">湖南</省份详情>
        <地区>
            <市 id="changsha">长沙</市>
            <市 id="zhuzhou">株洲</市>
        </地区>
    </省份>
</国家>*/
string.save("/test.xml", xmlstr) 

io.open()//打开控制台 

xml = com.CreateObject("MSXML.DOMDocument")
io.print( com.DumpTypeInfo(xml) )

//打开xml文件
xml.load(io.fullpath("/test.xml")) 

//读写xml文件


// 获取所有的省份标签    
var 所有省份节点 = xml.getElementsByTagName("省份");
// 循环遍历省份标签    
for index, 省份 in com.each(  所有省份节点 ) { 
    // 获取省份详情标签Node
    var 省份详情 =  省份.getElementsByTagName("省份详情");
    /*    
     * 要获取省份详情标签的Id属性要分两部走   
     * 1. 获取省份详情中所有属性的列表也就是  省份详情.item(0).attributes   
     * 2. 获取省份详情中id的属性，因为其在第一位所以用  省份详情.item(0).attributes.item(0).nodeValue     
     * 
     * 若取属性的值可以用item(*).nodeValue   
     * 若取属性的标签可以用item(*).nodeName   
     * 若取属性的类型可以用item(*).nodeType   
     */   
    io.print( "省份详情 Id: " ,  省份详情.item(0).attributes.item(0).nodeValue  );
    io.print( "省份详情 value: " , 省份详情.item(0).text  );

    // 获取该省份下所有的地区标签    
    地区 =  省份.getElementsByTagName("地区");
    // 循环遍历地区标签     
    for index, 市 in com.each( 地区) { 
       //获取市标签Node
       市 = 市.getElementsByTagName("市");
       io.print( "　　　市 Id: ", 市.item(0).attributes.item(0).nodeValue );
       io.print( "　　　市 value: ", 市.item(0).text );
       io.print( "　　　市 Id: ", 市.item(1).attributes.item(0).nodeValue );
       io.print( "　　　市 value: ", 市.item(1).text );
    }
}

io.print("");

// 获取所有的地区标签    
var 地区 = xml.getElementsByTagName("地区"); 
for index, 市 in com.each( 地区) { 
   //获取市标签Node
   var 市 = 市.getElementsByTagName("市");
   io.print( "　　　市 Id: ", 市.item(0).attributes.item(0).nodeValue );
   io.print( "　　　市 value: ", 市.item(0).text );
   io.print( "　　　市 Id: ", 市.item(1).attributes.item(0).nodeValue );
   io.print( "　　　市 value: ", 市.item(1).text );
}


root = xml.documentelement

//修改国家下属第一个字节点的文本内容
//注意 AAuto数组下标从1开始，而com数组下标从零开始

//下面两句的作用是一样的
root.childNodes.item(0).Text="testitem" 
root.childNodes.item(0).setText("testitem2") //在属性名字前加上set前缀、并以函数形式调用属性方法

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

io.print( text)


//保存xml文件
xml.Save(io.fullpath("/result.xml"))

import process;
process.execute("notepad.exe",io.fullpath(  "/result.xml" ) )

