返回    建站常识 > 正文

javascript+xml 操作

浏览次数:857次 添加时间:2010-8-13

<?xml version="1.0" encoding="utf-8" ?>
<Login>
    <Character>
        <C Text="热血" Value="0"></C>
        <C Text="弱气" Value="1"></C>
        <C Text="激情" Value="2"></C>
        <C Text="冷静" Value="3"></C>
        <C Text="冷酷" Value="4"></C>
    </Character>
    <Weapon>
        <W Text="光束剑" Value="0"></W>
        <W Text="光束配刀" Value="1"></W>
    </Weapon>
    <EconomyProperty>
        <P Text="平均型" Value="0"></P>
        <P Text="重视攻击" Value="1"></P>
        <P Text="重视敏捷" Value="2"></P>
        <P Text="重视防御" Value="3"></P>
        <P Text="重视命中" Value="4"></P>
    </EconomyProperty>
</Login>
目前我需要对这个xml文件的内容进行操作.
首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的.
// 加载xml文件
loadXML    = function(xmlFile)
{
    var xmlDoc;
    if(window.ActiveXObject)
    {
        xmlDoc    = new ActiveXObject(Microsoft.XMLDOM);
        xmlDoc.async    = false;
        xmlDoc.load(xmlFile);
    }
    else if (document.implementation&&document.implementation.createDocument)
    {
        xmlDoc    = document.implementation.createDocument(, , null);
        xmlDoc.load(xmlFile);
    }
    else
    {
        return null;
    }
   
    return xmlDoc;
}
xml文件对象出来了, 接下去我就要对这个文件进行操作了.
比如说,我们目前需要得到节点Login/Weapon/W的第一个节点的属性,那么我们能如下进行.


// 首先对xml对象进行判断
checkXMLDocObj    = function(xmlFile)
{
    var xmlDoc    = loadXML(xmlFile);
    if(xmlDoc==null)
    {
        alert(你的浏览器不支持xml文件读取,于是本页面禁止你的操作,推荐使用IE5.0以上能解决此问题!);
        window.location.href=/Index.aspx;
    }
   
    return xmlDoc;
}

// 然后开始获取需要的Login/Weapon/W的第一个节点的属性值
var xmlDoc    = checkXMLDocObj(/EBS/XML/Login.xml);
var v    = xmlDoc.getElementsByTagName(Login/Weapon/W)[0].childNodes.getAttribute(Text)
而我在我的程式中的写法是这样子的,当然我在程式中的写法是已应用到实际中的了.一并给出来,以供查看
initializeSelect    = function(oid, xPath)
{
    var xmlDoc    = checkXMLDocObj(/EBS/XML/Login.xml);
    var n;
    var l;
    var e    = $(oid);
    if(e!=null)
    {
        n    = xmlDoc.getElementsByTagName(xPath)[0].childNodes;
        l    = n.length;
        for(var i=0; i<l; i++)
        {
            var option    = document.createElement(option);
            option.value    = n[i].getAttribute(Value);
            option.innerHTML    = n[i].getAttribute(Text);
            e.appendChild(option);
        }
    }
}
上面的访问代码中,我们是通过xmlDoc.getElementsByTagName(xPath)来进行的.
还能通过xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute(Text)进行访问.
一些常用方法:
xmlDoc.documentElement.childNodes(0).nodeName,能得到这个节点的名称.
xmlDoc.documentElement.childNodes(0).nodeValue,能得到这个节点的值. 这个值是来自于这样子的xml格式:<a>b</b>, 于是能得到b这个值.
xmlDoc.documentElement.childNodes(0).hasChild,能判断是否有子节点<?xml version="1.0" encoding="utf-8" ?>
<Login>
    <Character>
        <C Text="热血" Value="0"></C>
        <C Text="弱气" Value="1"></C>
        <C Text="激情" Value="2"></C>
        <C Text="冷静" Value="3"></C>
        <C Text="冷酷" Value="4"></C>
    </Character>
    <Weapon>
        <W Text="光束剑" Value="0"></W>
        <W Text="光束配刀" Value="1"></W>
    </Weapon>
    <EconomyProperty>
        <P Text="平均型" Value="0"></P>
        <P Text="重视攻击" Value="1"></P>
        <P Text="重视敏捷" Value="2"></P>
        <P Text="重视防御" Value="3"></P>
        <P Text="重视命中" Value="4"></P>
    </EconomyProperty>
</Login>
目前我需要对这个xml文件的内容进行操作.
首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的.
// 加载xml文件
loadXML    = function(xmlFile)
{
    var xmlDoc;
    if(window.ActiveXObject)
    {
        xmlDoc    = new ActiveXObject(Microsoft.XMLDOM);
        xmlDoc.async    = false;
        xmlDoc.load(xmlFile);
    }
    else if (document.implementation&&document.implementation.createDocument)
    {
        xmlDoc    = document.implementation.createDocument(, , null);
        xmlDoc.load(xmlFile);
    }
    else
    {
        return null;
    }
   
    return xmlDoc;
}

xml文件对象出来了, 接下去我就要对这个文件进行操作了.
比如说,我们目前需要得到节点Login/Weapon/W的第一个节点的属性,那么我们能如下进行.


// 首先对xml对象进行判断
checkXMLDocObj    = function(xmlFile)
{
    var xmlDoc    = loadXML(xmlFile);
    if(xmlDoc==null)
    {
        alert(你的浏览器不支持xml文件读取,于是本页面禁止你的操作,推荐使用IE5.0以上能解决此问题!);
        window.location.href=/Index.aspx;
    }
   
    return xmlDoc;
}

// 然后开始获取需要的Login/Weapon/W的第一个节点的属性值
var xmlDoc    = checkXMLDocObj(/EBS/XML/Login.xml);
var v    = xmlDoc.getElementsByTagName(Login/Weapon/W)[0].childNodes.getAttribute(Text)
而我在我的程式中的写法是这样子的,当然我在程式中的写法是已应用到实际中的了.一并给出来,以供查看
initializeSelect    = function(oid, xPath)
{
    var xmlDoc    = checkXMLDocObj(/EBS/XML/Login.xml);
    var n;
    var l;
    var e    = $(oid);
    if(e!=null)
    {
        n    = xmlDoc.getElementsByTagName(xPath)[0].childNodes;
        l    = n.length;
        for(var i=0; i<l; i++)
        {
            var option    = document.createElement(option);
            option.value    = n[i].getAttribute(Value);
            option.innerHTML    = n[i].getAttribute(Text);
            e.appendChild(option);
        }
    }
}
上面的访问代码中,我们是通过xmlDoc.getElementsByTagName(xPath)来进行的.
还能通过xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute(Text)进行访问.
一些常用方法:
xmlDoc.documentElement.childNodes(0).nodeName,能得到这个节点的名称.
xmlDoc.documentElement.childNodes(0).nodeValue,能得到这个节点的值. 这个值是来自于这样子的xml格式:<a>b</b>, 于是能得到b这个值.
xmlDoc.documentElement.childNodes(0).hasChild,能判断是否有子节点

手机地图   一键拨号:400-881-0901
@2013 南京逗点有限公司 www.nanjingweb.com