首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

xml SelectSingleNode()步骤

2012-09-17 
xml SelectSingleNode()方法string TabFieldNameDataRow[] rows nullrows dt.Select()// xmlNode.P

xml SelectSingleNode()方法
string TabFieldName;
  DataRow[] rows = null;
  rows = dt.Select();
  // xmlNode.ParentNode;
  foreach (var item in rows)
  {
  string xmlNodeName = item["XmlField"].ToString();
  TabFieldName = item["TableField"].ToString();
  // XmlNode q = xmlNode.ParentNode;
  XmlNode tempXmlNode = xmlNode.SelectSingleNode("//" + xmlNodeName); if (tempXmlNode != null)
  {
  tempXmlNode.InnerText = mHeadTable.Rows[j][TabFieldName].ToString();
  }

  }
为什么SelectSingleNode方法每次都是查找到xml模板里面的第一个节点。xmlNode 中我都指定了查询body部分,但它还是查找到head部分中的节点。把head中的节点给重新赋值了。
有没有高手帮忙解决啊。。。。

[解决办法]
xmlNode是不是没有变化,你在哪指定 xmlNode的指向了
[解决办法]

C# code
class XMLTester { #region 准备处理XML片段 /// <summary> /// /// </summary> /// <param name="fileFullPath"></param> public void processXML(string fileFullPath) { XmlDocument xmlDoc = new XmlDocument(); //给定了文件的全路径,载入文档 xmlDoc.Load(fileFullPath); //若给定的不是文件,而是XML字符串,可以如下得到Document //xmlDoc.LoadXml(xmlStr); // 此处是处理文档中的 //Resources//UIResource节点,这是一个XML片段 // XmlNode node = xmlDoc.DocumentElement.SelectSingleNode("//Resources//UIResource"); // 也可以处理整篇文档 XmlNode node = xmlDoc.DocumentElement; string rootString = node.Name; processNode(node, rootString); } public void processNode(XmlNode xmlNode,string rootStr) { if (xmlNode.HasChildNodes == true) { processBranchNode(xmlNode); processNode(xmlNode.FirstChild, rootStr); } else { processLeafNode(xmlNode); if (xmlNode.NextSibling != null) { processNode(xmlNode.NextSibling,rootStr); } else { int flag = 0; while (xmlNode.NextSibling == null) { if (xmlNode.Name == rootStr)//检查是否到了根节点,如果不检查会出现节点的引用错误 { flag = 1; break; } else { xmlNode = xmlNode.ParentNode; } } if (flag == 0) { if (xmlNode.Name != rootStr) processNode(xmlNode.NextSibling,rootStr); else Console.Write("process XML End=============================\r\n\r\n"); } else if (flag == 1) { Console.Write("process XML End=============================\r\n\r\n"); } } } } /// <summary> ///处理叶节点,可用 /// </summary> /// <param name="xmlNode"> 一个叶节点</param> private static void processLeafNode(XmlNode xmlNode) { Console.Write(" "+xmlNode.Name); Console.WriteLine(" is a leaf XML Node ,its first Attribute: key:"+xmlNode.Attributes[0].Name +"; Value:"+xmlNode.Attributes[0].Value); Console.Write(xmlNode.InnerText); Console.Write("\n"); } private static void processBranchNode(XmlNode xmlNode) { Console.Write(xmlNode.Name); Console.WriteLine(" has children; children count: " +xmlNode.ChildNodes.Count); Console.Write("\n"); } #endregion public static void Main() { XMLTester t = new XMLTester(); t.processXML(@"D:\test.xml"); Console.Read(); } } 

热点排行