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

关于C# 读取XML 的有关问题~救急

2012-06-05 
关于C# 读取XML 的问题~救急!!本菜鸟刚刚学C#,求大虾们解救啊,谢谢!!~~现在想读取XML上的内容,并在文本框,

关于C# 读取XML 的问题~救急!!
本菜鸟刚刚学C#,求大虾们解救啊,谢谢!!~~
  现在想读取XML上的内容,并在文本框,textbox1,textbox2,textbox3 上分别显示标签<UserCode> <UserName> <Userpwd>
  的内容 ,但运行的时候,文本框上只能显示最后一个<User>标签的内容,以下是代码:

 class XML
  {
  public string re;
  public string UserCode;
  public string UserName;
  public string UserPassword;
  public void WriteXML(string usercode, string username, string userpassword)
  {
  string FileName = @"C:\Users\leo\Desktop\test\test\save.xml";

  //初始化XML文档操作类
  XmlDocument myDoc = new XmlDocument();
  //加载XML文件
  myDoc.Load(FileName);

  //添加元素--UserCode
  XmlElement ele = myDoc.CreateElement("UserCode");
  XmlText text = myDoc.CreateTextNode(usercode);

  //添加元素--UserName
  XmlElement ele1 = myDoc.CreateElement("UserName");
  XmlText text1 = myDoc.CreateTextNode(username);

  //添加元素--UserPwd
  XmlElement ele2 = myDoc.CreateElement("UserPwd");
  XmlText text2 = myDoc.CreateTextNode(userpassword);

  //添加节点 User要对应我们xml文件中的节点名字
  XmlNode newElem = myDoc.CreateNode("element", "User", "");

  //在节点中添加元素
  newElem.AppendChild(ele);
  newElem.LastChild.AppendChild(text);
  newElem.AppendChild(ele1);
  newElem.LastChild.AppendChild(text1);
  newElem.AppendChild(ele2);
  newElem.LastChild.AppendChild(text2);

  //将节点添加到文档中
  XmlElement root = myDoc.DocumentElement;
  root.AppendChild(newElem);

  //保存
  myDoc.Save(FileName);

  }


  public void ReadXML()
  {
  try
  {
  using (XmlReader reader = XmlReader.Create(@"C:\Users\leo\Desktop\test\test\save.xml"))
  {
  reader.Read();
  reader.ReadStartElement("UserLogin");
  reader.ReadStartElement("User");
  reader.ReadStartElement("UserCode");
  UserCode = reader.ReadString();
  reader.ReadEndElement();
  reader.ReadStartElement("UserName");
  UserName = reader.ReadString();
  reader.ReadEndElement();
  reader.ReadStartElement("UserPwd");
  UserPassword = reader.ReadString();
  reader.ReadEndElement();
  reader.ReadEndElement();

  while (reader.Read())
  {
  if (reader.NodeType == XmlNodeType.Element)
  {
  re = reader.Name;

  if (re == "UserLogin")
  {

  }
  else if (re == "UserCode")
  {
  if (reader.Read())
  {
  UserCode = reader.Value;


  }

  }
  else if (re == "UserName")
  {
  if (reader.Read())
  {
  UserName = reader.Value;

  }


  }
  else if (re == "UserPwd")
  {
  if (reader.Read())
  {
  UserPassword = reader.Value;

  }

  }
  else if (reader.NodeType == XmlNodeType.EndElement)
  {
  re = reader.Name;
  }

  }




  }




  }  
   
   
   
  }
  catch
  {
  MessageBox.Show("fail!");
  }

   
   
   
   
   
   
   
   
   

   
   
   
  }
   
   
  }
   
  }

[解决办法]
你确定有将内容写到xml中?你先执行看是否写入,如果写入那么就调试读出的,一步一步调试看哪里出问题就行了!建议你都写到一个字符串,用分隔符,读出来的时候split就ok了。
[解决办法]
XmlReader.Read 方法 

在衍生類別中覆寫時,從資料流讀取下一個節點。
这个读取方法是向前进的,MSDN上面有详解;
下面是读取的例子;

[code=C#][/code]


reader.MoveToContent();
// Parse the file and display each of the nodes.
while (reader.Read()) {
switch (reader.NodeType) {
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.Text:
Console.Write(reader.Value);
break;
case XmlNodeType.CDATA:
Console.Write("<![CDATA[{0}]]>", reader.Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
Console.Write("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration:
Console.Write("<?xml version='1.0'?>");
break;
case XmlNodeType.Document:
break;
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.Write(reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name);
break;

}
------解决方案--------------------


也就是说使用它就要用break,我一般用

C# code
XmlNodeList list = doc.[u]SelectSingleNode[/u]("/Equipment/Image").ChildNodes;            foreach (XmlNode node in list)            {                string id = node["id"].InnerText;                string ratio = node["ratio"].InnerText;                string location = node["location"].InnerText;                string size = node["size"].InnerText;                string name = node["name"].InnerText;            [u][/u]}
[解决办法]
C# code
XDocument xdoc = XDocument.Load(@"C:\Users\leo\Desktop\test\test\save.xml"");            var query = from ele in xdoc.Descendants("User")                        select ele;            if (query.Count() > 0)            {                foreach (XElement ele in query.ElementAt(0).Elements())                {                    if (ele.Name == "UserCode")                    {                        textBox1.Text = ele.Value;                    }                    else if (ele.Name == "UserName")                    {                        textBox2.Text = ele.Value;                    }                    else if (ele.Name == "UserPwd")                    {                        textBox3.Text = ele.Value;                    }                }            } 

热点排行