想生成有格式的xml这样写不对吗?

fleetingevent 2016-09-20 01:41:46


///////////////////////////目标

<chart>
<categories>
<category label=0:20/>
<category label=0:35/>
<category label=0:50/>
</categories>


<dateset>
<set value=123/>
<set value=145/>
<set value=164/>
<dateset>

</chart>



代码是这样的,有一些是我想当然的。。
但是我编译之后我会在
root.AppendChild(XmlCategory);//添加到<Categories>节点中
会说未将对象引用,怎么办???
想要弄成上面这种格式的xml文件格式?!!!



string myConnectionString = "Database=userdb;Data Source=localhost;User Id=root;Password=111111";
MySqlConnection mycn = new MySqlConnection(myConnectionString);
mycn.Open();
MySqlCommand mycm = new MySqlCommand("select * from msprgin", mycn);
MySqlDataAdapter da = new MySqlDataAdapter(mycm);
DataSet MyDataSet = new DataSet();
da.Fill(MyDataSet);
mycn.Close();
//写入Xml
XmlDocument xmldoc = new XmlDocument ( ) ;
XmlDeclaration xmldecl;
xmldecl = xmldoc.CreateXmlDeclaration("1.0","utf-8",null);
xmldoc.AppendChild ( xmldecl);
//加入一个根元素
XmlElement XmlChart = xmldoc.CreateElement ( "" , "Charts" , "" ) ;
XmlChart.SetAttribute("hoverCapSepChar", "|");
XmlChart.SetAttribute("rotateNames", "0");
xmldoc.AppendChild ( XmlChart ) ;

//加入另外一个元素
XmlElement XmlCategories = xmldoc.CreateElement("", "Categories", "");
XmlChart.AppendChild(XmlCategories);
for(int i=0;i<50;i++)
{
string a = MyDataSet.Tables[0].Rows[i][0].ToString();

if(a!=null)

{
XmlNode root=xmldoc.SelectSingleNode("Catagories");//查找<Categories>
XmlElement XmlCategory=xmldoc.CreateElement("Category");//创建一个<Category>节点
XmlCategory.SetAttribute("label", a);//设置该节点label属性
root.AppendChild(XmlCategory);//添加到<Categories>节点中
}

}




//保存创建好的XML文档
xmldoc.Save(Server.MapPath("D:/软件工程/Chart/Data/msprgin.xml"));
}


...全文
251 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
没什么效率低的,你只连了一次数据库
fleetingevent 2016-09-20
  • 打赏
  • 举报
回复
引用 6 楼 starfd 的回复:
那你就直接
XmlCategories.AppendChild(XmlCategory);
本来上面就存在的节点,何必再找呢
hahahahha !!!对!我刚刚就这么干了!!!! 但是我这么一个个从数据库里加东西进去感觉有点低效啊。。。。请问有没有什么好点的方法?
  • 打赏
  • 举报
回复
那你就直接
XmlCategories.AppendChild(XmlCategory);
本来上面就存在的节点,何必再找呢
  • 打赏
  • 举报
回复
你可以尝试用下 DataSet ds = new DataSet("YourRootElement"); ds.WriteXml(@"c1.xml") DataSet.WriteXml 方法
fleetingevent 2016-09-20
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
上面说错了,你是通过xmldoc创建了Catagories,但你是添加到了XmlChart 节点下,所以你应该通过
xmldoc.SelectSingleNode("//Catagories")
跨层找
我调试的时候设断点发现root还是null
fleetingevent 2016-09-20
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
上面说错了,你是通过xmldoc创建了Catagories,但你是添加到了XmlChart 节点下,所以你应该通过
xmldoc.SelectSingleNode("//Catagories")
跨层找


可是还是现实未将对象引用设置到对象的实例。
  • 打赏
  • 举报
回复
上面说错了,你是通过xmldoc创建了Catagories,但你是添加到了XmlChart 节点下,所以你应该通过
xmldoc.SelectSingleNode("//Catagories")
跨层找
  • 打赏
  • 举报
回复
你上面直接有XmlCategories 了,干嘛还要通过xmldoc查找,你创建的XmlCategories 目前还在内存中,还没执行xmldoc.Save,即还没持久化到xml文件中

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧