c# 读xml文件的集中方法
小火龙果 2010-07-08 11:10:14 本人是个菜鸟 基尼天接触到这个问题 比较头痛 经过努力基本明白了
可能有的人 认为我写的 太小儿科了 我希望这个可以帮助和我一样的菜鸟
<?xml version="1.0" encoding="utf-8"?>
<MESSAGE>
<MESSAGE_HEAD>
<MESSAGE_TYPE>AP2</MESSAGE_TYPE>
<MESSAGE_CREATE_TIME>2010-05-10 14:25:43</MESSAGE_CREATE_TIME>
<SENDER>0908</SENDER>
<RECEIVER>0908000000006</RECEIVER>
</MESSAGE_HEAD>
<MESSAGE_LIST>
<BILL_INFO>
<CUSTOMS_ID>0908</CUSTOMS_ID>
<SHIP_NAME_EN>JIN MAN HE</SHIP_NAME_EN>
<VOYAGE_NO>612E</VOYAGE_NO>
<BILL_NO>DNLJMH0612E800</BILL_NO>
<FREE_FLAG>1</FREE_FLAG>
<PER_OP>99999</PER_OP>
<PER_DATE>2010-05-10 14:25:36</PER_DATE>
<SOURCE_PLACE>
</SOURCE_PLACE>
<DISCHARGE_PLACE>
</DISCHARGE_PLACE>
<NOTE>
</NOTE>
</BILL_INFO>
</MESSAGE_LIST>
</MESSAGE>
这是一个xml文件 c# 怎么能读取到这些标签中的值
方法一:
读到dataset中去 然后按照表进行取值
namespace xml
{
class Program
{
static void Main(string[] args)
{
//server=localhost;database=gongsi;uid=sa;pwd=sa @"Data Source=127.0.0.1\SQLEXPRESS;Initial Catalog=gongsi;Integrated Security=True;Pooling=False"
string connString = "server=localhost;database=gongsi;uid=sa;pwd=sa";
DataSet ds = new DataSet();
//读进dataset时候是都城了多张表 这个可以根据自己想去那张表进行选择
ds.ReadXml("E:/AP2-E-81B32E51-7AFE-4417-BABB-D105A388A6E0.xml");
DataTable dt = ds.Tables["BILL_INFO"];
string CUSTOMS_ID = dt.Rows[0]["CUSTOMS_ID"].ToString();
string SHIP_NAME_EN = dt.Rows[0]["SHIP_NAME_EN"].ToString();
//行号 和要取的属性名称
string VOYAGE_NO = dt.Rows[0]["VOYAGE_NO"].ToString();
string BILL_NO = dt.Rows[0]["BILL_NO"].ToString();
string FREE_FLAG = dt.Rows[0]["FREE_FLAG"].ToString();
string PER_OP = dt.Rows[0]["PER_OP"].ToString();
string PER_DATE = dt.Rows[0]["PER_DATE"].ToString();
string SOURCE_PLACE = dt.Rows[0]["SOURCE_PLACE"].ToString();
string DISCHARGE_PLACE = dt.Rows[0]["DISCHARGE_PLACE"].ToString();
string NOTE = dt.Rows[0]["NOTE"].ToString();
方法二
最笨的方法 就是 一个一个节点的去取
类似:
XmlReader xr = XmlReader.Create(path);
xr.ReadStartElement("MESSAGE_LIST");
xr.ReadStartElement("BILL_INFO");
xr.ReadStartElement("CUSTOMS_ID");
Console.WriteLine("CUSTOMS_ID节点的内容是:");
Console.WriteLine(xr.ReadString());
xr.ReadEndElement();
xr.ReadStartElement("SHIP_NAME_EN");
Console.WriteLine("SHIP_NAME_EN节点的内容是:");
Console.WriteLine(xr.ReadString());
xr.ReadEndElement();
xr.ReadEndElement();
xr.ReadEndElement();
方法三
通过XmlTextReader之类的方法进行取值
类似:
XmlTextReader xtr = new XmlTextReader(path);
xtr.Read();
while (xtr.Read())
{
xtr.MoveToElement();
Console.WriteLine("name:" + xtr.Name);
Console.WriteLine("base url:" + xtr.BaseURI);
Console.WriteLine("local name:" + xtr.LocalName);
Console.WriteLine("attriribute count:" + xtr.AttributeCount.ToString());
Console.WriteLine("depth:" + xtr.Depth.ToString());
Console.WriteLine("line number:" + xtr.LineNumber.ToString());
Console.WriteLine("node type:" + xtr.NodeType.ToString());
Console.WriteLine("attribute cout:" + xtr.Value.ToString());
}
根据这些属性可以取到需要的东西
然后用xtr.MoveToElement();移向像下一条
希望能帮助到和我一样迷茫过的菜鸟们
}
}
}