创建XML文件

初学C#的菜菜鸟 2018-07-06 06:18:08
大家好,初学XML,请大家多指教。
为了得到第1张图片所示的XML内容,编写了第2张图片所示的代码。


因为<Point>有数千个,一个个写太麻烦了。point值已经保存在数组里,请问如何利用循环实现?
...全文
189 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2018-07-07
  • 打赏
  • 举报
回复
还有一种通用的 方法就是 用反射直接 序列化。
XBodhi. 2018-07-07
  • 打赏
  • 举报
回复
已经测试过了。


namespace ConsoleApp2
{
using System.Xml;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
//初始化测试数据
Folder folder = new Folder() { name = "MYNAEM" };
IList<Placemark> placemarks = new List<Placemark>();
placemarks.Add(new Placemark() { name = "20177", Point = new Point() { coordinates = "99.9298,26.51303" } });
placemarks.Add(new Placemark() { name = "20178", Point = new Point() { coordinates = "99.9312,26.51302" } });
placemarks.Add(new Placemark() { name = "20179", Point = new Point() { coordinates = "99.9358,26.51305" } });
folder.Placemarks = placemarks;

//构建XML
XmlDocument xmlDocument = new XmlDocument();

XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "UTF-8",null);
xmlDocument.AppendChild(xmlDeclaration);

XmlNode folderNode = xmlDocument.CreateNode(XmlNodeType.Element, "Folder", null);

XmlNode folderNameNode = xmlDocument.CreateNode(XmlNodeType.Element, "name", null);
folderNameNode.InnerText = folder.name;
folderNode.AppendChild(folderNameNode);

foreach (var placemark in placemarks)
{
XmlNode placemarkNode = xmlDocument.CreateNode(XmlNodeType.Element, "Placemark", null);

XmlNode placemarkNameNode = xmlDocument.CreateNode(XmlNodeType.Element, "name", null);
placemarkNameNode.InnerText = placemark.name;

XmlNode pointNode = xmlDocument.CreateNode(XmlNodeType.Element, "Point", null);

XmlNode coordinatesNode = xmlDocument.CreateNode(XmlNodeType.Element, "coordinates", null);
coordinatesNode.InnerText = placemark.Point.coordinates;
pointNode.AppendChild(coordinatesNode);

placemarkNode.AppendChild(placemarkNameNode);
placemarkNode.AppendChild(pointNode);

folderNode.AppendChild(placemarkNode);
}
xmlDocument.AppendChild(folderNode);
xmlDocument.Save("D:\\my.xml");
}
}


class Folder
{
public string name { get; set; }

public IList<Placemark> Placemarks { get; set; }
}

class Placemark
{
public string name { get; set; }

public Point Point { get; set; }
}

class Point
{
public string coordinates { get; set; }
}
}
XBodhi. 2018-07-07
  • 打赏
  • 举报
回复
一会给你写个代码吧

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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