最近在处理xml时,发现有很多xml的 节点内有些文字需要节点,正常取值取不出来,特地写个方法解决问题
首先,看一下我遇到了什么问题
<父节点> <子节点>111</子节点> <子节点>222</子节点> <子节点>333</子节点> <子节点>444</子节点> 555 </父节点>
这样的话 elements()这个方法就只能取到 4个子节点
下面这个方法就是用来解决这个问题
/// <summary> /// 给没有节点的添加节点 /// </summary> /// <param name="xElement">要处理的节点或xml</param> /// <param name="XName">要添加的节点名称</param> /// <returns></returns> public static XElement CreateNewEle(XElement xElement, string XName) { string xmlTxt = xElement.ToString().Replace("/>", "/>\n").Replace("<", "\n<"); string line = string.Empty; StringReader reader = new StringReader(xmlTxt); StringBuilder xmlbuilber = new StringBuilder(); while ((line = reader.ReadLine()) != null) { if (!string.IsNullOrEmpty(line.Trim()) && !line.Contains("<") && !line.Contains("/>")) { line = "<临时节点>" + line + "</临时节点>"; } if (!string.IsNullOrEmpty(line)) { xmlbuilber.Append(line); } } xElement = XElement.Parse(xmlbuilber.ToString()); return xElement; }
调用方法 :
ele :要处理的节点或xml
“临时节点”:要添加的节点名称
XElement newEle = CreateNewEle(ele,"临时节点");
处理后结果:
<父节点> <子节点>111</子节点> <子节点>222</子节点> <子节点>333</子节点> <子节点>444</子节点> <临时节点>555</临时节点> </父节点>