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 有多个重复子节点操作的更多相关文章

  1. 用TinyXml做XML解析示例 TinyXml查找唯一节点及修改节点操作

    // 读者对象:对TinyXml有一定了解的人.本文是对TinyXml工具的一些知识点的理解. // 1 TinyXml中对TiXmlNode进行了分类,是用一个枚举进行描述的. // enum No ...

  2. JavaScript 节点操作Dom属性和方法(转)

    JavaScript 节点操作Dom属性和方法   一些常用的dom属性和方法,列出来作为手册用. 属性:   1.Attributes 存储节点的属性列表(只读)   2.childNodes 存储 ...

  3. ORACLE 11gR2 RAC添加删除(正常及强制)节点操作步骤(删除篇)

    ORACLE 11gR2 RAC添加删除(正常及强制)节点操作步骤(删除篇) 本文主要转载 [  http://www.cnxdug.org/?p=2511 ] 有部分细节自己实验添加,再此谢谢前辈. ...

  4. 【转】JavaScript 节点操作 以及DOMDocument属性和方法

    最近发现DOMDocument对象很重要,还有XMLHTTP也很重要 注意大小写一定不能弄错. 属性: 1Attributes 存储节点的属性列表(只读) 2childNodes 存储节点的子节点列表 ...

  5. JavaScript 之 节点操作

    一.文档树结构 DOM 可以将任何 HTML 或 XML 描绘成一个由多层节点构成的结构. 节点分为不同的类型,每种类型分别表示文档中不同的信息.每个节点都拥有各自的特点.数据和方法,另外也与其他节点 ...

  6. JavaScript之DOM操作,事件操作,节点操作

    1,DOM操作 1.1  概念 所谓DOM,全称Document Object Model 文档对象模型,DOM是W3C(World Wide Web Consortuum )标准,同时也定义了访问诸 ...

  7. HTML节点操作

    HTML节点操作 HTML节点的基本操作,添加节点,替换节点,删除节点,绑定事件,访问子节点,访问父节点,访问兄弟节点. 文档对象模型Document Object Model,简称DOM,是W3C组 ...

  8. 深入理解DOM节点操作

    × 目录 [1]创建节点 [2]插入节点 [3]移除节点[4]替换节点[5]复制节点 前面的话 一般地,提起操作会想到“增删改查”这四个字,而DOM节点操作也类似地对应于此,接下来将详细介绍DOM的节 ...

  9. 深入学习jQuery节点操作

    × 目录 [1]创建节点 [2]插入节点 [3]删除节点[4]复制节点[5]替换节点[6]包裹节点 前面的话 DOM节点操作包括创建节点.插入节点.移除节点.替换节点和复制节点.jQuery也有类似的 ...

随机推荐

  1. 关于等效的物理意义 On the Physical Meaning of Equivalence

    当我们谈到两个物理概念是等效的,这意味着: 1.它们拥有同样的属性.例如质量和能量都可以弯曲空间. 2.它们可以在设计实验中无法区分彼此.例如恒星系统中行星的质量与恒星的引力. 3.它们可以互相转化. ...

  2. consul集群docker版本脚本

    https://blog.csdn.net/fenglailea/article/details/79098246 docker run -d --name node1 -e 'CONSUL_LOCA ...

  3. 【抄袭】VB.NET扩展WebBrowser,拥有跳转前获取URL的能力

    来自 http://www.cnblogs.com/yuanjw/archive/2009/02/09/1386789.html 我仅做VB化,并优化了事件消息 Imports System.Comp ...

  4. VisualSVN 破解方法

    第一步,首先准备反汇编工具 ildasm.exe,找到VisualSVN的安装路径,一般先备份,在备份里面操作. 第二步,转储 , 得到同名的il文件:VisualSVN.Core.L.il,用记事本 ...

  5. VS2017 v15.8.0 Task ExpandPriContent failed. Illegal characters in path

    昨天更新了VS到最新版本v15.8.0,但是编译UWP出现了操蛋的bug. 谷歌一下,vs社区已经有答案了. 打开.csproj文件,在节点 <PropertyGroup> 里面,加上一行 ...

  6. Linux 操作系统文件略解

    1.使用tree命令查看根目录的树结构 # tree -L 1 如果没有tree命令,可以使用yum进行安装 # yum -y install tree 执行命令后,即可看到根下一共有19个目录 . ...

  7. 深度学习:浅谈RNN、LSTM+Kreas实现与应用

    主要针对RNN与LSTM的结构及其原理进行详细的介绍,了解什么是RNN,RNN的1对N.N对1的结构,什么是LSTM,以及LSTM中的三门(input.ouput.forget),后续将利用深度学习框 ...

  8. [JavaScript] 的异步编程之手写一个Gernerator的例子

    <html> <head> <meta charset="UTF-8"> <title>Generator Demo</tit ...

  9. 传输层两大协议:TCP和UDP

    1. UDP 1.1 发送方式(如何发送) 面向无连接. 无状态服务. 不保证不丢失,不保证按顺序到达. 1.2 发送形式(发送的是什么) 基于数据报. 一个一个的发送,一个一个的接收. 1.3 使用 ...

  10. webApp开发中的总结

    meta标签:  H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...