c# XML 有多个重复子节点操作
1,继续添加ebm子节点
public static void CreateXml()
{
//创XML建对象
XmlDocument doc = new XmlDocument();
//声明根节点
XmlElement books;
//判断文件是否存在
if (File.Exists("d://Test.xml"))
{
//该文件存在
//加载文件
doc.Load("d://Test.xml");
//获得根节点
books = doc.DocumentElement; }
else//该文件不存在
{
//创建声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//创建根节点
books = doc.CreateElement("EBD");
doc.AppendChild(books);
} //开始正常写入信息就可以了
XmlElement xml = doc.CreateElement("EBM");
books.AppendChild(xml); XmlElement ebmId = doc.CreateElement("EBMID");
ebmId.InnerText = "1";
xml.AppendChild(ebmId); XmlElement areaCode = doc.CreateElement("AreaCode");
areaCode.InnerText = "360699999901";
xml.AppendChild(areaCode); XmlElement startTime = doc.CreateElement("StartTime");
startTime.InnerText = "2018-07-26 9:06:04";
xml.AppendChild(startTime); XmlElement endTime = doc.CreateElement("EndTime");
endTime.InnerText = "2018-07-26 7:22:04";
xml.AppendChild(endTime); XmlElement msgType = doc.CreateElement("MsgType");
msgType.InnerText = "1";
xml.AppendChild(msgType); doc.Save("d://Test.xml");
}
2, 修改某个子节点(通过EBMID确定具体的节点)
public static void UpdateXmlForEBMID(string ebmId)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("d://Test.xml");
var xns = xmlDoc.SelectSingleNode("EBD");
XmlNodeList xnl = xns.ChildNodes;
foreach(XmlNode xn in xnl )
{
XmlElement xe = (XmlElement)xn;
XmlNodeList xnl2 = xe.ChildNodes;
foreach (XmlNode xn2 in xnl2)
{
XmlElement xe2 = (XmlElement)xn2; if (xe2.InnerText.Equals(ebmId))
{
XmlNodeList elemList = xe.GetElementsByTagName("MsgType");
elemList[0].InnerXml = "2";
}
break;
}
//break;//如果更新完了指定节点,有需要则退出循环
}
xmlDoc.Save("d://Test.xml");//保存的该XML文件,否则更新无效
}
3,读取某个子节点下的所有属性值(这边也是通过EBMID去匹配)
public static void ReadXMLForLog(string xmlPath,string ebmId)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("d://Test.xml");
var xns = xmlDoc.SelectSingleNode("EBD");
XmlNodeList xnl = xns.ChildNodes;
Dictionary<string, string> obj = new Dictionary<string, string>(); foreach (XmlNode xn in xnl)
{
XmlElement xe = (XmlElement)xn;
XmlNodeList xnl2 = xe.ChildNodes; foreach (XmlNode xn2 in xnl2)
{
XmlElement xe2 = (XmlElement)xn2;
if (xe2.InnerText.Equals("2"))
{
var objs = new {
EBMID = xe.GetElementsByTagName("EBMID"),
AreaCode = xe.GetElementsByTagName("AreaCode"),
StartTime= xe.GetElementsByTagName("StartTime"),
EndTime = xe.GetElementsByTagName("EndTime"),
MsgType = xe.GetElementsByTagName("MsgType"),
};
string ebmIdValue = objs.EBMID[0].InnerText;
}
break;
}
}
}
c# XML 有多个重复子节点操作的更多相关文章
- 用TinyXml做XML解析示例 TinyXml查找唯一节点及修改节点操作
// 读者对象:对TinyXml有一定了解的人.本文是对TinyXml工具的一些知识点的理解. // 1 TinyXml中对TiXmlNode进行了分类,是用一个枚举进行描述的. // enum No ...
- JavaScript 节点操作Dom属性和方法(转)
JavaScript 节点操作Dom属性和方法 一些常用的dom属性和方法,列出来作为手册用. 属性: 1.Attributes 存储节点的属性列表(只读) 2.childNodes 存储 ...
- ORACLE 11gR2 RAC添加删除(正常及强制)节点操作步骤(删除篇)
ORACLE 11gR2 RAC添加删除(正常及强制)节点操作步骤(删除篇) 本文主要转载 [ http://www.cnxdug.org/?p=2511 ] 有部分细节自己实验添加,再此谢谢前辈. ...
- 【转】JavaScript 节点操作 以及DOMDocument属性和方法
最近发现DOMDocument对象很重要,还有XMLHTTP也很重要 注意大小写一定不能弄错. 属性: 1Attributes 存储节点的属性列表(只读) 2childNodes 存储节点的子节点列表 ...
- JavaScript 之 节点操作
一.文档树结构 DOM 可以将任何 HTML 或 XML 描绘成一个由多层节点构成的结构. 节点分为不同的类型,每种类型分别表示文档中不同的信息.每个节点都拥有各自的特点.数据和方法,另外也与其他节点 ...
- JavaScript之DOM操作,事件操作,节点操作
1,DOM操作 1.1 概念 所谓DOM,全称Document Object Model 文档对象模型,DOM是W3C(World Wide Web Consortuum )标准,同时也定义了访问诸 ...
- HTML节点操作
HTML节点操作 HTML节点的基本操作,添加节点,替换节点,删除节点,绑定事件,访问子节点,访问父节点,访问兄弟节点. 文档对象模型Document Object Model,简称DOM,是W3C组 ...
- 深入理解DOM节点操作
× 目录 [1]创建节点 [2]插入节点 [3]移除节点[4]替换节点[5]复制节点 前面的话 一般地,提起操作会想到“增删改查”这四个字,而DOM节点操作也类似地对应于此,接下来将详细介绍DOM的节 ...
- 深入学习jQuery节点操作
× 目录 [1]创建节点 [2]插入节点 [3]删除节点[4]复制节点[5]替换节点[6]包裹节点 前面的话 DOM节点操作包括创建节点.插入节点.移除节点.替换节点和复制节点.jQuery也有类似的 ...
随机推荐
- Azure DevOps Server 2019 (TFS)安装教程
概述 Azure DevOps Server 2019 (之前的名称为TFS),作为微软Azure DevOps 的企业私有(on-premises)服务器,是一个为开发团队提供软件协作开发管理的服务 ...
- Python 数据结构与算法—— 快排
1. 先从待排序的数组中找出一个数作为基准数(取第一个数即可),然后将原来的数组划分成两部分:小于基准数的左子数组和大于等于基准数的右子数组.然后对这两个子数组再递归重复上述过程,直到两个子数组的所有 ...
- 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid
[源码下载] 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid 作者:webabc ...
- [学习笔记]普通平衡树Splay
哈哈哈哈哈哈哈终于会打\(splay\)啦 现在我来发一下\(splay\)的讲解吧 小蒟蒻由于码风与他人不同,所以自己找了上百篇码风诡异的\(splay\)合成的,感谢\(zcysky\)的代码与我 ...
- 同时绑定onpropertychange 和 oninput 事件,实时检测 input、textarea输入改变事件,支持低版本IE,支持复制粘贴
实时检测 input.textarea输入改变事件,支持低版本IE,支持复制粘贴 检测input.textarea输入改变事件有以下几种: 1.onkeyup/onkeydown 捕获用户键盘输入事件 ...
- java和js获取当前天之后或之前7天(任意)日期
一.获取过去第几天的日期(- 操作) 或者 未来 第几天的日期( + 操作) /** * 获取过去第几天的日期(- 操作) 或者 未来 第几天的日期( + 操作) * * @param past * ...
- spring@Transactional注解事务不回滚不起作用无效的问题处理
这几天在项目里面发现我使用@Transactional注解事务之后,抛了异常居然不回滚.后来终于找到了原因. 如果你也出现了这种情况,可以从下面开始排查. 一.特性先来了解一下@Transaction ...
- 【JAVA】枚举
枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示. 1.常量的使用 在JDK1.5之前,我们定义常量都是:public ...
- iis7 bug解决
只需重新注册下AspNet就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示符窗口. 2 进入到C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 ...
- vue代码上传服务器后背景图片404解决方法
问题:代码上传服务器后,图片404,使用的font-awesome图标也是404 解决办法: 如果你用了vue-cil,那么在build目录下找到utils.js中的ExtractTextPlugin ...