热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

winform,xml读取与写入

创建两个xml文件,一个xml做为模板配置项,另一个做为临时接收数据。privatestaticstringlocalPathSystem.Environment.CurrentD

创建两个xml文件,一个 xml做为模板配置项,另一个做为临时接收数据。

private static string localPath = System.Environment.CurrentDirectory + @"\test\";

private static string localPathOld = System.Environment.CurrentDirectory + @"\test\YUYUE_PRINTOld.xml";
private static string localPathAdd = System.Environment.CurrentDirectory + @"\test\YUYUE_PRINT.xml";

写入方法:

string path = localPath + "/YUYUE_PRINTOld.xml";
string stu_At= "{'name': '0000899112','BarcodeRecognition': 'UPC-E','Sex': '男','Age': '27','Blood': '全血','BarCode': '210720002147','Content': '网织红细胞计数','iMode': 0}";
var docment = CustomerFormBase.Json2Xml(stu_At);
docment.Save(path);

xml读取方法:

///


/// xml读取
///

///


///


private void button2_Click(object sender, EventArgs e)
{
string path = localPath + "/YUYUE_PRINTOld.xml";
string stu_At = "{\"name\":\"0000899112 宁强\",\"BarcodeRecognition\": \"UPC-E\",\"Sex\":\"男\",\"Age\": \"27\",\"Blood\": \"全血\",\"BarCode\": \"210720002147\",\"Content\": \"网织红细胞计数\",\"iMode\": 0}";
var docment = CustomerFormBase.Json2Xml(stu_At);
docment.Save(path);
StringBuilder m_sbData = new StringBuilder("");
var xmlTemporary = CustomerFormBase.XmlTemporaryFiles(localPathOld);
var xmlCOnfigurationF= CustomerFormBase.XmlConfigurationFile(localPathAdd);
bool isXml = true;
if (xmlTemporary==null)
{
isXml = false;
MessageBox.Show("xml临时文件读取失败,请查看文件是text文件夹,以及对应文件是否存在!");
}
if (xmlCOnfigurationF==null)
{
isXml = false;
MessageBox.Show("xml配置文件读取失败,请查看文件是text文件夹,以及对应文件是否存在!");
}
List xmlData = new List();
if (isXml)
{
bool isXmlModel = true;
foreach (DataRow drXML in xmlConfigurationF.Rows)
{
var xmlModel = new XmlOld();
if (decimal.TryParse(drXML["X"].ToString(), out decimal xAt))
{
xmlModel.X = xAt;
}
else
{
isXmlModel = false;
}
if (decimal.TryParse(drXML["Y"].ToString(), out decimal yAt))
{
xmlModel.Y = yAt;
}
else
{
isXmlModel = false;
}
if (!string.IsNullOrWhiteSpace(drXML["Names"].ToString()))
{
xmlModel.Names = drXML["Names"].ToString();
xmlModel.NameInfo = xmlTemporary.GetValueByXmlNodeName(xmlModel.Names.Trim());
}
else
{
isXmlModel = false;
}
if (isXmlModel)
{
xmlData.Add(xmlModel);
}
else
{
MessageBox.Show("X/Y/Names都为必填项不可为空,并且X/Y只能位数字");
break;
}
SetPagedirection(0);//设置页模式打印方向
SetPagestartposition(Convert.ToInt32(xmlModel.X), Convert.ToInt32(xmlModel.Y));//设置页模式数据打印起始位置
m_sbData = new StringBuilder(xmlModel.NameInfo);//性别
PrintString(m_sbData, 0);//打印字符串
}
if (isXmlModel)
{
this.txt_Xml.Text = "读取成功";
}
else
{
this.txt_Xml.Text = "读取失败";
}
}
}

 创建一个CustomerFormBase类

public abstract class CustomerFormBase
{
[JsonIgnore]
public string ExtendData { get; set; }
public static T Parse(string v) where T : CustomerFormBase
{
var value = JsonConvert.DeserializeObject(v);
var xml = JsonConvert.DeserializeXmlNode(v, "root");
value.ExtendData
= xml.OuterXml;
return value;
}
public static List ParseToList(string vs) where T : CustomerFormBase
{
var values = new List();
var valueStrs = JsonConvert.DeserializeObjectstring>>(vs);
foreach (var valueStr in valueStrs)
{
values.Add(Parse
(valueStr));
}
return values;
}
public virtual JObject ToMergedObject()
{
var json = "{}";
if (!string.IsNullOrWhiteSpace(ExtendData))
{
var doc = new XmlDocument();
doc.LoadXml(ExtendData);
json
= JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.None, true);
}
var obj = JObject.Parse(json);
var norObj = JObject.FromObject(this);
obj.Merge(norObj);
obj.Remove(nameof(ExtendData));
return obj;
}
public override string ToString()
{
return ToMergedObject().ToString();
}
///


/// 根据xml节点获取对应的数据
///

///

xml节点名称
///
public string GetValueByXmlNodeName(string xmlNodeName)
{
var jObject = ToMergedObject();
var tokenValue = jObject.SelectToken(xmlNodeName);
if (tokenValue != null)
{
if (tokenValue.Type == JTokenType.Array)
{
var arrayValue = tokenValue.Value().Children();
return string.Join("|", arrayValue);
}
else
{
return tokenValue.Value<string>();
}
}
else
{
return string.Empty;
}
}
///


/// 更新extendData的值
///

///


///
public bool addOrUpdateNodeValue(Dictionary<string, string> keyValues) where T : CustomerFormBase
{
var jObject = ToMergedObject();
foreach (var key in keyValues.Keys)
{
var jToken = jObject.SelectToken(key);
if (jToken == null)
{
jObject.Add(key, keyValues[key]);
}
else
{
jObject[key]
= keyValues[key];
}
}
this.ExtendData = Parse(jObject.ToString()).ExtendData;
return true;
}
///


/// json字符串转换为Xml对象
///

///


///
public static XmlDocument Json2Xml(string sJson)
{
JavascriptSerializer oSerializer
= new JavascriptSerializer();
Dictionary
<string, object> Dic = (Dictionary<string, object>)oSerializer.DeserializeObject(sJson);
XmlDocument doc
= new XmlDocument();
XmlDeclaration xmlDec;
xmlDec
= doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.InsertBefore(xmlDec, doc.DocumentElement);
XmlElement nRoot
= doc.CreateElement("root");
doc.AppendChild(nRoot);
foreach (KeyValuePair<string, object> item in Dic)
{
XmlElement element
= doc.CreateElement(item.Key);
KeyValue2Xml(element, item);
nRoot.AppendChild(element);
}
return doc;
}
public static void KeyValue2Xml(XmlElement node, KeyValuePair<string, object> Source)
{
object kValue = Source.Value;
if (kValue.GetType() == typeof(Dictionary<string, object>))
{
foreach (KeyValuePair<string, object> item in kValue as Dictionary<string, object>)
{
XmlElement element
= node.OwnerDocument.CreateElement(item.Key);
KeyValue2Xml(element, item);
node.AppendChild(element);
}
}
else if (kValue.GetType() == typeof(object[]))
{
object[] o = kValue as object[];
for (int i = 0; i )
{
XmlElement xitem = node.OwnerDocument.CreateElement("Item");
KeyValuePair
<string, object> item = new KeyValuePair<string, object>("Item", o);
KeyValue2Xml(xitem, item);
node.AppendChild(xitem);
}
}
else
{
XmlText text
= node.OwnerDocument.CreateTextNode(kValue.ToString());
node.AppendChild(text);
}
}
///


/// xml临时文件读取
///

public static XmlOld XmlTemporaryFiles(string localPathOld)
{
if (!File.Exists(localPathOld))
{
return null;
}
else
{
var xmlModel = new XmlOld();
XmlDocument xmlDoc
= new XmlDocument();
xmlDoc.Load(localPathOld);
//读取xml文件
XmlNode xn = xmlDoc.SelectSingleNode("root");
var xmlText = xn.InnerXml.ToString();
if (xmlText.Length > 0)
{
xmlText
= "" + xmlText + "";
xmlModel.ExtendData
= xmlText;
return xmlModel;
}
else
{
return null;
}
}
}
///
/// xml配置文件读取
///

public static DataTable XmlConfigurationFile(string localPathAdd)
{
if (!File.Exists(localPathAdd))//若文件夹不存在则新建文件夹
{
return null;
}
else
{
DataSet ds
= new DataSet();
ds.ReadXml(localPathAdd);
var xmlSet = ds.Tables["Line"];
if (xmlSet != null)
{
return xmlSet;
}
else
{
return null;
}
}
}
}

创建XmlOld类:

///


/// xml信息字段接收
///

public partial class XmlOld: CustomerFormBase
{
///
/// X抽
///

public decimal X { get; set; }
///
/// Y抽
///

public decimal Y { get; set; }
///
/// 字段名称
///

public string Names { get; set; }
}

  



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
huineisuan111184
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有