C#获取XML TAG VALUE

我有一个名为BackupManager.xml的xml文件

         

我试图从标签中获取值到字符串例如: – 我需要’backUpPath’标签的值为’D:/ BACKUPS /’到字符串说’str’

我试过的代码是

 XmlDocument infodoc = new XmlDocument(); infodoc.Load("BackupManager.xml"); //int col = infodoc.GetElementsByTagName("directory").Count; String str = infodoc.GetElementByID("directory").value; 

但我在’str’上得到零值

试用

linq到xml的方式

 IEnumerable direclty = infodoc.Elements("Settings").Elements("directory"); var rosterUserIds = direclty .Select(r => r.Attribute("value").Value); 

要么

  XmlNodeList nodeList= (infodoc.SelectNodes("configuration/Settings/directory")); foreach (XmlNode elem in nodeList) { string strValue = elem.Attributes[1].Value; } 

因为您没有ID为“directory”的元素。 要么你想要

 GetElementByID("backUpPath").GetAttribute("value"); 

要么

 GetElementsByTagName("directory"); 

请记住,第二种方法返回XMLNodeList!

如果你想要你可以使用XmlReader

  string str =""; using (var reader = new StreamReader(BackupManager.xml)) { var all = reader.ReadToEnd(); StringReader stringReader = new StringReader(all); XmlReader xmlReader = XmlTextReader.Create(stringReader,new System.Xml.XmlReaderSettings() { IgnoreWhitespace = true, IgnoreComments = true }); while (xmlReader.Read()) if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "directory") str = xmlReader["value"]; } 
 XmlDocument infodoc = new XmlDocument(); infodoc.Load("BackupManager.xml"); XmlElement directoryElement = document.GetElementById("directory"); string backupPath = directoryElement.GetAttribute("value"); 
 if (xml.NodeType == XmlNodeType.Element && xml.Name == "Architecture") { string architecture = xml.ReadElementContentAsString(); } 

在过去,我不得不处理一个巨大的XML,性能也是问题所在。 我所需要的只是对XML的非缓存,仅向前,只读访问。

另外,我没有控制模式,只需要从XML和CDATA中挤出某些标记值。

以下是我最终使用的内容:

 private string GetValueFromXmlTag(string xml, string tag) { if (xml == null || tag == null || xml.Length == 0 || tag.Length == 0) return ""; string startTag = "<" + tag + ">", endTag = "", value = null; int startTagIndex = xml.IndexOf(tag, StringComparison.OrdinalIgnoreCase), endTagIndex = xml.IndexOf(endTag, StringComparison.OrdinalIgnoreCase); if (startTagIndex < 0 || endTagIndex < 0) return ""; int valueIndex = startTagIndex += startTag.Length - 1; try { value = xml.Substring(valueIndex, endTagIndex - valueIndex); } catch (ArgumentOutOfRangeException responseXmlParserEx) { string err = string.Format("Error reading value for \"{0}\" tag from XXX XML", tag); log.Error(err, responseXmlParserEx); } return (value ?? ""); } 
 XmlDocument infodoc = new XmlDocument(); //Server.MapPath() return the xml file address infodoc.Load(Server.MapPath("~/XMLFile1.xml")); XmlNodeList nodeList = (infodoc.SelectNodes("configuration/Settings/backUPpath")); foreach (XmlNode elem in nodeList) { Response.Write(elem.Attributes[1].Value); }