读书人

读取特殊格式的xml 如何读

发布时间: 2013-01-08 14:02:13 作者: rapoo

读取特殊格式的xml 怎么读啊
各位大侠 像这种格式的xml文件怎么读取啊


<?xml version="1.0" encoding="gb2312"?>
<DATASET>
<TITLE>湘潭市烟草公司2012年卷烟经营简报</TITLE>
<SUBTITLE>2012年(截止到2012年09月18日的卷烟累计实现销售数据,不含访销数量)</SUBTITLE>
<TEXT>
卷烟本期销量箱,本期销额万元,销售均价0.00元/箱,本期期末库存量箱。
</TEXT>
<SUBTITLE>2012年(截止到2012年09月18日的卷烟累计实现销售数据,不含访销数量)</SUBTITLE>
<TEXT>
卷烟本期销量箱,本期销额万元,销售均价0.00元/箱,本期期末库存量箱。
</TEXT>
<SUBTITLE>2012年(截止到2012年09月18日的卷烟累计实现销售数据,不含访销数量)</SUBTITLE>
<TEXT>
卷烟本期销量箱,本期销额万元,销售均价0.00元/箱,本期期末库存量箱。
</TEXT>
<SUBTITLE>2012年(截止到2012年09月18日的卷烟累计实现销售数据,不含访销数量)</SUBTITLE>
<TEXT>
卷烟本期销量箱,本期销额万元,销售均价0.00元/箱,本期期末库存量箱。
</TEXT>
</DATASET>

我要娶到 TITLE 的列表 SUBTITLE的列表 还有TEXT的列表 怎么办啊
[解决办法]
三个列表
XElement xEle = XElement.Load(@"C:\Users\M\Desktop\Test.txt");
var result_1 = xEle.Descendants("TITLE").Select(a=>a.Value);
var result_2 = xEle.Descendants("SUBTITLE").Select(a => a.Value);
var result_3 = xEle.Descendants("TEXT").Select(a => a.Value);

[解决办法]

string path = "XML路径";
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode root = doc.SelectSingleNode("DATASET");
//title列表
XmlNodeList titleList = root.SelectNodes("TITLE");
foreach (XmlNode xn in titleList)
{
Console.WriteLine(xn.InnerText);
}
//subtitle列表
XmlNodeList subList = root.SelectNodes("SUBTITLE");
foreach (XmlNode xn in subList)
{
Console.WriteLine(xn.InnerText);
}
//text列表
XmlNodeList textList = root.SelectNodes("TEXT");
foreach (XmlNode xn in textList)
{
Console.WriteLine(xn.InnerText.Trim());


}


[解决办法]
    class Program
{
static void Main(string[] args)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(DATASET));
DATASET dataset;
// 读取
using (System.IO.StreamReader reader = new System.IO.StreamReader("1.txt",Encoding.GetEncoding("gb2312")))
{
dataset = serializer.Deserialize(reader) as DATASET;
}

// 保存
using (System.IO.StreamWriter writer = new System.IO.StreamWriter("2.xml"))
{
serializer.Serialize(writer,dataset);
writer.Flush();
}
}
}
[Serializable]
public class DATASET
{
private List<string> _text=new List<string>();
public string TITLE { get; set; }

public string SUBTITLE { get; set; }
[XmlElement("TEXT")]
public List<string> TEXT
{
get { return _text; }
set { _text = value; }
}
}
反序列化到对象然后随便玩吧

读书人网 >C#

热点推荐