var dom_mainMenu=new ActiveXObject("Msxml2.DOMDocument");dom_mainMenu.async = false;dom_mainMenu.load("test.xml");test.xml:
<configuration>
<main img="../Images/bar_bottom_ico_home.gif" id="m_HrManager" text="人事管理" simpleDes="User home page">
<sub id="m_favorite" img="../Images/ico_16_123.gif" text="我的Library" navigateTo=""/>
<sub id="m_EventView2" img="../Images/ico_18_adminReports.gif" text="系统事件" navigateTo=""/>
<sub id="m_EventRuleSetting2" img="../Images/ico_16_134.gif" text="事件规则" navigateTo=""/>
<sub id="m_AlertRuleSetting2" img="../Images/ico_16_1010.gif" text="报警规则" navigateTo=""/>
<sub id="m_alertLogs2" img="../Images/ico_18_2020.gif" text="报警日志" navigateTo=""/>
</main>
</configuration>
var nodes = dom_mainMenu.selectSingleNode("//main[@id='" + mainId + "']");
for(var i = 0;i<nodes.childNodes.length;i++)
{
alert(nodes.childNodes[i].getAttribute("img"));
}

解决方案 »

  1.   

    遍历节点,当节点类型(nodeType)为3时就表示该节点为数据
    用nodeValue属性读出
      

  2.   

    是这样的我在做一个数型菜单 处理都已经写好了 问题是现在我只能写一个固定格式的菜单
    treearray[0] =  new tree_node("A","#","root","_self");treearray[1] =  new tree_node("A.a","#",treearray[0],"_self");
    treearray[2] =  new tree_node("A.b","#",treearray[0],"_self");
    这样的话数据就必须得写死  我想把这棵树做成活的 也就是数据是从xml文件里读进来
    我写了一个,是二级的 这样的
    <?xml version="1.0" ?>
    <root>
        <className id="1">
           <a>1234</a>
           <b>5.95</b>
           <c>100</c>
        </className>
        <className id="2">
           <a>6234</a>
           <b>22.00</b>
           <c>10</c>
        </className>
    </root>
    读取的时候我用了两个循环做的,我没想出来要是xml文档是n级的该怎么写读取???
    字节点还有孙子节点呢?? 不懂了!!郁闷! 闹心! 不爽!
      

  3.   

    http://community.csdn.net/Expert/topic/4359/4359670.xml?temp=.5354273
    中的树是你的吗?怎么连节点定义的形式都一样?读取xml文档可通过DOMDocument对象,不过我不知道ie以外的浏览器是否都能支持
    因此我只用js自行遍历
    // 遍历xml对象
    function tree(Element,debug) {
      var buffer = "";
      var node = "";
      if(Element.nodeType != 3) {
        node = Element;
        buffer += onElement(Element,debug);
      }
      if(Element.nodeType == 3)
        buffer += onData(Element);
      if(Element.hasChildNodes) {
        for(var i=0;i<Element.childNodes.length;i++) {
          buffer += tree(Element.childNodes(i),debug);
        }
      }
      if(node)
        buffer += endElement(node,debug);
      return buffer;
    }/***** 以下三个函数请根据需要自行修改 *****/
    // 遍历xml对象--节点开始
    function onElement(Element,debug) {
      var buffer = (debug ? "&lt;" : "<") + Element.nodeName;
      n = Element.attributes.length
      if(n>0) {  // 若该节点有参数
        for(var i=0;i<n;i++)
          buffer += ' ' + Element.attributes(i).name + '=\"' + Element.attributes(i).value + '"';
      }
      buffer += debug ? "&gt;" : ">";
      return buffer;
    }// 遍历xml对象--节点结束
    function endElement(Element,debug) {
      return (debug ? "&lt;/" : "</") + Element.nodeName + (debug ? "&gt;<br>" : ">");
    }// 遍历xml对象--节点数据
    function onData(Element) {
      return Element.nodeValue
    }