当前位置:编程学习 > C#/ASP.NET >>

Xml循环问题

--------------------编程问答-------------------- --------------------编程问答-------------------- 不好答,代码太多了 --------------------编程问答-------------------- 可以简写 --------------------编程问答-------------------- --------------------编程问答--------------------
<Menus>
<Menu id="0" name="首页">
<MenuItemTitle sid="01" mid="0" name="常用选项">
<MenuItem mid="0" tid="01" url="Home.aspx">后台首页</MenuItem>
<MenuItem mid="0" tid="01" url="Test.aspx">测试页</MenuItem>
</MenuItemTitle>
</Menu>
<Menu id="0" name="试试">
<MenuItemTitle sid="01" mid="0" name="常用选项">
<MenuItem mid="0" tid="01" url="Home.aspx">后台首页</MenuItem>
<MenuItem mid="0" tid="01" url="Test.aspx">测试页</MenuItem>
</MenuItemTitle>
</Menu>
</Menus>

格式是这样么? --------------------编程问答--------------------

string xml = @"<?xml version='1.0'?>
<Menus>
<Menu id='0' name='首页'>
<MenuItemTitle sid='01' mid='0' name='常用选项'>
<MenuItem mid='0' tid='01' url='Home.aspx'>后台首页</MenuItem>
<MenuItem mid='0' tid='01' url='Test.aspx'>测试页</MenuItem>
</MenuItemTitle>
</Menu>
<Menu id='0' name='试试'>
<MenuItemTitle sid='01' mid='0' name='常用选项'>
<MenuItem mid='0' tid='01' url='Home.aspx'>后台首页</MenuItem>
<MenuItem mid='0' tid='01' url='Test.aspx'>测试页</MenuItem>
</MenuItemTitle>
</Menu>
</Menus>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            foreach (XmlElement xe in doc.SelectNodes("/Menus/Menu"))
            {
                Console.WriteLine("<h1>{0}</h1>", xe.Attributes["name"].Value);

                Console.WriteLine("<h2>{0}</h2>", xe.FirstChild.Attributes["name"].Value);
                for (int i = 0; i < xe.FirstChild.ChildNodes.Count; i++)
                {
                    Console.WriteLine("<a href='{0}'>{1}</a>", xe.FirstChild.ChildNodes[i].Attributes["url"].Value, xe.FirstChild.ChildNodes[i].InnerText);
                }

            }
--------------------编程问答--------------------

<?xml version="1.0" encoding="utf-8"?>
<Menus>
  <Menu id="0" name="首页">
    <MenuItemTitle sid="01" mid="0" name="常用选项">
      <MenuItem mid="0" tid="01" url="Home.aspx">后台首页</MenuItem>
      <MenuItem mid="0" tid="01" url="Test.aspx">测试页</MenuItem>
    </MenuItemTitle>
  </Menu>
  <Menu id="0" name="试试">
     <MenuItemTitle sid="01" mid="0" name="常用选项">
       <MenuItem mid="0" tid="01" url="Home.aspx">后台首页</MenuItem>
       <MenuItem mid="0" tid="01" url="Test.aspx">测试页</MenuItem>
     </MenuItemTitle>
  </Menu>
</Menus>


<html>
<head>
<title></title>
<script type="text/javascript">
function show()
{
if (window.XMLHttpRequest)

{
     xmlhttp=new XMLHttpRequest();
  
}
else
{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 
}
if(xmlhttp!=null)
{
   xmlhttp.open("GET","xmlname.xml",false);
   xmlhttp.send(null);
   var responsexml=xmlhttp.responseXML;
   var menus=responsexml.getElementsByTagName("Menus")[0];
   var tb=document.getElementById("tb");
   var tr=null;
   var tc=null;
   for(var i=0;i<menus.childNodes.length;i++)
   {
       var menu=menus.childNodes[i];
       tr=tb.insertRow(i);
       tc=tr.insertCell(0);
       tc.innerHTML=menu.getAttribute("name");
              
       tr=tb.insertRow(i);
       tc=tr.insertCell(0);
       tc.innerHTML=menu.childNodes[0].getAttribute("name");
       for(var j=0;j<menu.childNodes[0].childNodes.length;j++)
       {
          var mi=menu.childNodes[0].childNodes[j];
          var url=mi.getAttribute("url");
          var txt=mi.childNodes[0].nodeValue;
          tr=tb.insertRow(j);
          tc=tr.insertCell(0);
          tc.innerHTML="<a href="+url+">"+txt+"</a>";          
       }
       
       
   }


}
else
{
  alert("你用的什么浏览器?");
}
}
</script>
</head>
<body>
<input type="button" value="显示" onclick="show()">
<table id="tb"></table>
</body>
</html>

你xml太强差不少标签
--------------------编程问答--------------------
那个 insertRow()从前往后插,不知道有没有好的方法倒过来 --------------------编程问答-------------------- 完全按你的要求写的,优化了一下

<html>
<head>
<title></title>
<script type="text/javascript">
function show()
{
if (window.XMLHttpRequest)

{
     xmlhttp=new XMLHttpRequest(); 
}
else
{
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
}
if(xmlhttp!=null)
{
   xmlhttp.open("GET","xmlname.xml",false);
   xmlhttp.send(null);
   var responsexml=xmlhttp.responseXML;
   var menus=responsexml.getElementsByTagName("Menus")[0];
   var html="";
   for(var i=0;i<menus.childNodes.length;i++)
   {
       var menu=menus.childNodes[i];
       html=html+"<h1>"+menu.getAttribute("name")+"</h1><br>";
       html=html+"<h2>"+menu.childNodes[0].getAttribute("name")+"</h2><br>";
       for(var j=0;j<menu.childNodes[0].childNodes.length;j++)
       {
          var mi=menu.childNodes[0].childNodes[j];
          var url=mi.getAttribute("url")+"<br>";
          var txt=mi.childNodes[0].nodeValue;
          html=html+"   <a href=\""+url+"\">"+txt+"</a>";          
       }           
   }
   document.getElementById("tb").innerHTML=html; 
}
else
{
  alert("你用的什么浏览器?");
}
}
</script>
</head>
<body onload="show()">
<div id="tb"></div>
</body>
</html>
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,