把这个xml解析之后,生成另一个xml。
求助,谢谢了?
我只是节选一小部分,当然数据量不止这一点。
就是要把每个的拥有父菜单id的table,插入到相对应的菜单项中。结果如第二个文件。
源xml
<NewDataSet>
<Table>
<MENUID>0</MENUID>
<MENULEVEL>1</MENULEVEL>
<MENUNAME>首页</MENUNAME>
</Table>
<Table>
<MENUID>1</MENUID>
<MENULEVEL>1</MENULEVEL>
<MENUNAME>管理</MENUNAME>
</Table>
<Table>
<MENUID>10</MENUID>
<MENULEVEL>1</MENULEVEL>
<MENUNAME>业务申办</MENUNAME>
</Table>
<Table>
<MENUID>11</MENUID>
<MENULEVEL>2</MENULEVEL>
<PARENTMENUID>1</PARENTMENUID>
<MENUNAME>业务办理</MENUNAME>
</Table>
<Table>
<MENUID>12</MENUID>
<MENULEVEL>3</MENULEVEL>
<PARENTMENUID>11</PARENTMENUID>
<MENUNAME>业务规则</MENUNAME>
</Table>
<Table>
<MENUID>13</MENUID>
<MENULEVEL>2</MENULEVEL>
<PARENTMENUID>1</PARENTMENUID>
<MENUNAME>统计分析</MENUNAME>
</Table><NewDataSet>第二个xml,需要生成的
<NewDataSet>
<table MENUID="0" MENUNAME="首页">
<table MENUID="12" MENUNAME="业务规则"> </table>
<table MENUID="11" MENUNAME="业务办理">
<table MENUID="12" MENUNAME="业务规则"> </table>
</table>
</table>
<table MENUID="1" MENUNAME="管理"></table>
<table MENUID="10" MENUNAME="业务申办"></table><NewDataSet>
求助,谢谢了?
我只是节选一小部分,当然数据量不止这一点。
就是要把每个的拥有父菜单id的table,插入到相对应的菜单项中。结果如第二个文件。
源xml
<NewDataSet>
<Table>
<MENUID>0</MENUID>
<MENULEVEL>1</MENULEVEL>
<MENUNAME>首页</MENUNAME>
</Table>
<Table>
<MENUID>1</MENUID>
<MENULEVEL>1</MENULEVEL>
<MENUNAME>管理</MENUNAME>
</Table>
<Table>
<MENUID>10</MENUID>
<MENULEVEL>1</MENULEVEL>
<MENUNAME>业务申办</MENUNAME>
</Table>
<Table>
<MENUID>11</MENUID>
<MENULEVEL>2</MENULEVEL>
<PARENTMENUID>1</PARENTMENUID>
<MENUNAME>业务办理</MENUNAME>
</Table>
<Table>
<MENUID>12</MENUID>
<MENULEVEL>3</MENULEVEL>
<PARENTMENUID>11</PARENTMENUID>
<MENUNAME>业务规则</MENUNAME>
</Table>
<Table>
<MENUID>13</MENUID>
<MENULEVEL>2</MENULEVEL>
<PARENTMENUID>1</PARENTMENUID>
<MENUNAME>统计分析</MENUNAME>
</Table><NewDataSet>第二个xml,需要生成的
<NewDataSet>
<table MENUID="0" MENUNAME="首页">
<table MENUID="12" MENUNAME="业务规则"> </table>
<table MENUID="11" MENUNAME="业务办理">
<table MENUID="12" MENUNAME="业务规则"> </table>
</table>
</table>
<table MENUID="1" MENUNAME="管理"></table>
<table MENUID="10" MENUNAME="业务申办"></table><NewDataSet>
doc.Load(Server.MapPath("a.xml"));
XmlNodeList list = xml.SelectSingleNode("NewDataSet").ChildNodes;
foreach(XmlNode xn in list )
{
XmlElement xe=(XmlElement)xn;
}
public void LoadXml(string path)
{
DataSet ds = new DataSet();
ds.ReadXml(path); XmlDocument xmlDoc = new XmlDocument();
XmlElement root = xmlDoc.CreateElement("NewDataSet");
DataTable dt = ds.Tables["Table"];
addNode(xmlDoc, root, dt, "");
xmlDoc.AppendChild(root);
xmlDoc.Save("new.xml");//保存新xml
}
//递归生成新xml节点
private void addNode(XmlDocument xmlDoc,XmlElement node,DataTable dt,string parent)
{
DataRow[] dr = dt.Select(parent == "" ? "MENULEVEL='1'" : "PARENTMENUID='" + parent + "'");
for (int i = 0; i < dr.Length; i++)
{
XmlElement ele = xmlDoc.CreateElement("table");
ele.SetAttribute("MENUID", dr[i]["MENUID"].ToString());
ele.SetAttribute("MENUNAME", dr[i]["MENUNAME"].ToString());
node.AppendChild(ele);
addNode(xmlDoc, ele, dt, dr[i]["MENUID"].ToString());
}
}用一个递归就可以,简单写了一下。做为参考吧