<?xml version="1.0" encoding="utf-8" ?>
<book>
<dengji id="C" name="初级">
<xingweilingyu id="A" name="基础知识">
<jiandingfanwei id="A" name="天然气基础知识">
<jiandingdian id="001" name="天然气的组成" />
<jiandingdian id="002" name="甲烷的物理性质" />
<jiandingdian id="003" name="气田气" />
<jiandingdian id="004" name="石油伴生气" />
<jiandingdian id="005" name="凝析气田气" />
<jiandingdian id="006" name="矿井气" />
<jiandingdian id="007" name="净气" />
<jiandingdian id="008" name="酸气" />
<jiandingdian id="009" name="气体的密度" />
<jiandingdian id="010" name="天然气的相对密度" />
<jiandingdian id="011" name="热值的概念" />
<jiandingdian id="012" name="高位热值" />
<jiandingdian id="013" name="低位热值" />
<jiandingdian id="014" name="几种燃料的热值换算" />
<jiandingdian id="015" name="沸点" />
<jiandingdian id="016" name="露点" />
<jiandingdian id="017" name="爆炸极限" />
<jiandingdian id="018" name="常见可燃气体的爆炸极限" />
<jiandingdian id="019" name="气体的临界参数" />
<jiandingdian id="020" name="水合物的生成" />
<jiandingdian id="021" name="水露点的制定目的" />
</jiandingfanwei>
</xingweilingyu>
</dengji>
</book>
1读取xml文件
XmlDocument dom = new XmlDocument();
dom.Load(@"D:\a.xml");
2遍历节点
大家有什么思路吗?
3 把这些属性存起来(到时候肯定是用的)
我把这些值存起来会插入到Excel文件的 有知道的朋友请说下思路。
5 个解决方案
#1
#2
Xml解析,你的文档是一级的,我的有三级,咱俩的不同之处在那里,其实我就是想知道如何一级一级的遍历出来。属性值取出来保存成一个集合就可以了。因为我还要用呢。
生成excel我也看了下,我就看到了一个,你的是导出excel文件。是从datagridview导出来的,而我是要把循环遍历出来的XML文件的数据写入到excel的,Xml文件的格式就是树的格式。(tree) 我只是想具体问题具体分析。链接虽然好。但是交流更好。
#3
总体思路就是把xml内容,存放到实体对象,在把实体对象写到excel
怎么把实体对象写到excel就很方便了。这个网上很多
/// <summary>
/// <summary>
/// xml 生成对象
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="path">xml路径</param>
/// <param name="nodeName">节点名称,默认body</param>
/// <returns>T对象</returns>
public static T XmlToT<T>(string path, string nodeName = "body") where T : class ,new()
{
using (Stream file = XmlDeserialize(path, nodeName))
{
T obj = new T();
obj = XmlToListSerializer<T>(file);
return obj;
}
}
/// <summary>
/// stream to 对象
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="stream">stream</param>
/// <returns>T对象</returns>
public static T XmlToListSerializer<T>(Stream stream)
{
using (StreamReader sr = new StreamReader(stream, System.Text.Encoding.UTF8))
{
XmlSerializer ser = new XmlSerializer(typeof(T));
var listsch = ser.Deserialize(sr);
T result = (T)listsch;
return result;
}
}
怎么把实体对象写到excel就很方便了。这个网上很多
#4
大致是这样的写法
var data = XDocument.Load(txt);
var t = data.Root.Element("MsgType").Value;
var x = data.Root.Element("MsgType");
var m = x.Element("Mei").Value;
。。。。。。。。。
#5
你这要表达什么意思呢?看不明白。
#1
XML解析,参考:
http://blog.csdn.net/chinacsharper/article/details/9246627
生成Excel,参考: http://blog.csdn.net/chinacsharper/article/details/12999435
生成Excel,参考: http://blog.csdn.net/chinacsharper/article/details/12999435
#2
Xml解析,你的文档是一级的,我的有三级,咱俩的不同之处在那里,其实我就是想知道如何一级一级的遍历出来。属性值取出来保存成一个集合就可以了。因为我还要用呢。
生成excel我也看了下,我就看到了一个,你的是导出excel文件。是从datagridview导出来的,而我是要把循环遍历出来的XML文件的数据写入到excel的,Xml文件的格式就是树的格式。(tree) 我只是想具体问题具体分析。链接虽然好。但是交流更好。
#3
总体思路就是把xml内容,存放到实体对象,在把实体对象写到excel
怎么把实体对象写到excel就很方便了。这个网上很多
/// <summary>
/// <summary>
/// xml 生成对象
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="path">xml路径</param>
/// <param name="nodeName">节点名称,默认body</param>
/// <returns>T对象</returns>
public static T XmlToT<T>(string path, string nodeName = "body") where T : class ,new()
{
using (Stream file = XmlDeserialize(path, nodeName))
{
T obj = new T();
obj = XmlToListSerializer<T>(file);
return obj;
}
}
/// <summary>
/// stream to 对象
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="stream">stream</param>
/// <returns>T对象</returns>
public static T XmlToListSerializer<T>(Stream stream)
{
using (StreamReader sr = new StreamReader(stream, System.Text.Encoding.UTF8))
{
XmlSerializer ser = new XmlSerializer(typeof(T));
var listsch = ser.Deserialize(sr);
T result = (T)listsch;
return result;
}
}
怎么把实体对象写到excel就很方便了。这个网上很多
#4
大致是这样的写法
var data = XDocument.Load(txt);
var t = data.Root.Element("MsgType").Value;
var x = data.Root.Element("MsgType");
var m = x.Element("Mei").Value;
。。。。。。。。。
#5
你这要表达什么意思呢?看不明白。