本人是个菜鸟 基尼天接触到这个问题 比较头痛 经过努力基本明白了
可能有的人 认为我写的 太小儿科了 我希望这个可以帮助和我一样的菜鸟
<?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();移向像下一条
希望能帮助到和我一样迷茫过的菜鸟们
}
}
}
可能有的人 认为我写的 太小儿科了 我希望这个可以帮助和我一样的菜鸟
<?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();移向像下一条
希望能帮助到和我一样迷茫过的菜鸟们
}
}
}
解决方案 »
- sql语句更新datagridview数据,附近有语法错误,大家进来看看
- Console.Write格式化输出字符串,请问我错在哪
- c#安装包
- 新手请问一个C#的类的函数的问题
- [实现读取指纹数据若干问题]首先是接口问题,应该算是接口吧
- Remoting 注册事件 异步回调 客户端和服务器端不在同一台机器
- 关于时间的比较
- 用c# 2005怎么做cs应用程序的启动封面呀?实现下有加载进度条,上面窗口又可以在程序加载时,浏览帮助画面...
- 求 quoted-printable 的编解码
- 关于创建Access数据库
- 在DataGridView里面显示一组数据,整型数组
- C#随机产生选择题(winform)
{
if(node.childNodes.Length==0)
document.WriteLine(node.InnerText)
else
{
foreach(XMLNODE n in node.childNodes)
{
f(n);
}
}}
dt.ReadXML("文件");
访问对应的行列即可。
这种方式效率可能高一些。详细可以搜索一下李天平兄的文章 。