当前位置: 代码迷 >> 综合 >> XML(4)——案例:银行交易数据读写
  详细解决方案

XML(4)——案例:银行交易数据读写

热度:99   发布时间:2023-10-01 19:12:49.0
<CFX><MSG><交易码  val="1000"/><流水号  val="100000000000000001"/><金额  val="1234567890.12"/><付款机构  val="1234"/><付款单位账号  val="12345678901234567890"/><收款机构  val="1234"/><收款单位账号  val="12345678901234567890"/></MSG><MSG>...................</MSG>
</CFX>

1、读取上述文件,将其导入数据库,考虑事务。

2、cmd.Parameters.Clear(); //容易丢

 

3、练习:将数据导出到xml文件。读写都要有。

4、在两个公司的第一个活都是做xml的导入、导出,项目中经常用。简历项目中可以增加一个把客户数据导出到xml、从xml导入数据的功能。很典型的公司机试题区分Value和Name和属性值易错:“交易码”是节点Element,value才是属性是Attribute

6、网站输出RSS中就会用到读取数据库写XML。

7、代码示例:

string dataDir = AppDomain.CurrentDomain.BaseDirectory;if (dataDir.EndsWith(@"\bin\Debug\")|| dataDir.EndsWith(@"\bin\Release\")){dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);}
<Persons><Person><Name>tom</Name><Age>30</Age></Person><Person><Name>Jim</Name><Age>50</Age></Person>
</Persons><Persons><Person Name="tom" Age="30"></Person><Person Name="Jim" Age="50"></Person>
</Persons>

说明:交易码:TradeNo、流水号:SeqNo、金额:Amount、付款机构:PayNo、付款单位帐号:PayAccountNo、收款机构:RecvNo,收款单位帐号:RecvAccountNo

T_Records 数据的导入导出。

(1)写:

XElement ePersons = new XElement("Persons");/*XElement pTom = new XElement("Person");pTom.Add(new XElement("Name","tom"));pTom.Add(new XElement("Age", "30"));ePersons.Add(pTom);XElement pJim = new XElement("Person");pJim.Add(new XElement("Name", "Jim"));pJim.Add(new XElement("Age", "50"));ePersons.Add(pJim);*/XElement pTom = new XElement("Person");pTom.Add(new XAttribute("Name", "tom"));//添加XAttribute就是生成属性pTom.Add(new XAttribute("Age", "30"));ePersons.Add(pTom);XElement pJim = new XElement("Person");pJim.Add(new XAttribute("Name", "Jim"));pJim.Add(new XAttribute("Age", "50"));ePersons.Add(pJim);Console.WriteLine(ePersons.ToString());

(2)读:

using (FileStream fs = File.OpenRead("c:/1.xml")){using (StreamReader reader = new StreamReader(fs)){//读取节点格式的属性值/*XDocument doc = XDocument.Load(reader);//IEnumerable<XElement> elements = doc.Root.Descendants("Person");foreach (XElement xePerson in doc.Root.Descendants("Person")){Console.WriteLine("姓名{0},年龄:{1}", xePerson.Element("Name").Value,xePerson.Element("Age").Value);}*///读取属性格式的属性值。XDocument doc = XDocument.Load(reader);foreach (XElement xePerson in doc.Root.Descendants("Person")){Console.WriteLine("姓名{0},年龄:{1}", xePerson.Attribute("Name").Value, xePerson.Attribute("Age").Value);}}               }

 

8、doc.Root得到的是根节点的XElement,XElement类的Element("tagname")方法得到的就是节点下第一个名字为tagname的节点。

  相关解决方案