+ -
当前位置:首页 → 问答吧 → [{已解决}]应该是最简单的xml问题,如何读取结点的值?

[{已解决}]应该是最简单的xml问题,如何读取结点的值?

时间:2003-12-19

来源:互联网

有如下xml文件,假设文件名为:mymsg.xml
<?xml version="1.0" encoding="gb2312" ?>
<childrenlist>

<child value='3301'>杭州地区</child>

<child value='3303'>温州地区</child>

<child value='3304'>嘉兴地区</child>

<child value='3305'>湖州地区</child>

<child value='3306'>绍兴地区</child>

<child value='3307'>金华地区</child>

<child value='3308'>衢州地区</child>

<child value='3309'>舟山地区</child>

<child value='3310'>台州地区</child>

<child value='3311'>丽水地区</child>

</childrenlist>

用以下javascript代码读取:
<script>
//在此之前,myselect已清空。
                var childrenobj=document.all.myselect;
        var oXMLDoc = new ActiveXObject('MSXML');
        var sURL = "mymsg.xml"
        oXMLDoc.url = sURL;
        var oRoot=oXMLDoc.root,oItem,oOption,sText,sValue;
        if(oRoot.children != null) {
                for(var i=0;i<oRoot.children.length;++i){
                        oItem = oRoot.children.item(i);
                        childrenobj[i]=new Option(oItem.text,oItem.value);
                }
        }
</script>

但实际上,oItem.value是空值,怎么回事?该怎么改?改脚本或改xml都行。

[ 本贴由 siping 于 2003-12-19 14:28 最后编辑 ]

作者: siping   发布时间: 2003-12-19

最后那句原来要这样写:
oOption = document.createElement('OPTION');
oOption.text = oItem.text;
oOption.value = oItem.getAttribute("value");
childrenobj.options.add(oOption);

作者: siping   发布时间: 2003-12-19

也可以写成
oOption = new Option(oItem.text,oItem.getAttribute('value'));
childrenobj.add(oOption);

[ 本帖由 guo_q 于 2004-1-9 09:53 最后编辑 ]

作者: guo_q   发布时间: 2004-01-09


<xml id="xmlData"> <childrenlist> <child value='3301'>杭州地区</child> <child value='3303'>温州地区</child> <child value='3304'>嘉兴地区</child> <child value='3305'>湖州地区</child> <child value='3306'>绍兴地区</child> <child value='3307'>金华地区</child> <child value='3308'>衢州地区</child> <child value='3309'>舟山地区</child> <child value='3310'>台州地区</child> <child value='3311'>丽水地区</child> </childrenlist> </xml> <select onChange="alert(value)"> <script language="JavaScript"> var obj = xmlData.XMLDocument.selectNodes('//child'); for(i=0; i<obj.length; i++) document.write('<option value="' + obj[i].getAttribute('value') + '">' + obj[i].text) </script> </select>
   提示:您可以先修改部分代码再运行

作者: 风云突变   发布时间: 2004-01-09

有问题,怎么显示是乱码?加上 encoding="gb2312" 也还是不行的

解决一下吧!

作者: kingofnet   发布时间: 2004-01-18



QUOTE:
[i]kingofnet[/i] 于 2004-1-18 09:37 写道:
有问题,怎么显示是乱码?加上 encoding="gb2312" 也还是不行的

解决一下吧!

你自己的 XML 解析器的问题吧
更新到 MsXML 4 SP2 看看~

作者: snakevil   发布时间: 2004-01-18

我这没问题

作者: yexj00   发布时间: 2004-01-22