如何使用XmlReader从XML中的特定子元素获取值?
这是XML字符串。
Question 1? abcdefg 123 Question 2? 12345678 123
那么如何通过给定的问题ID得到元素的值? 比方说,如果我给id值=“dd7e3bce-57ee-497a-afe8-e3d8d25e2671”,我想要返回字符串值
abcdefg
作为结果。
var xmlstr = "content from above xml example"; using (var reader = XmlReader.Create(new StringReader(xmlstr))) { while(reader.Read()) { if(reader.IsStartElement()) { var attr = reader["id"]; if(attr != null && attr == "dd7e3bce-57ee-497a-afe8-e3d8d25e2671") { if(reader.ReadToDescendant("response")) { result = reader.Value; // <= getting empty string? So what's wrong? break; } } } } }
你可能需要这样做,我认为问题是读者不会移动到文本,因为你变得空虚
if(reader.ReadToDescendant("response")) { reader.Read();//this moves reader to next node which is text result = reader.Value; //this might give value than break; }
上面一个是为我工作,你可以尝试在你的最后
我会用LINQ2XML ..
XDocument doc=XDocument.Parse(xmlstr); String response=doc.Elements("question") .Where(x=>x.Attribute("id")==id) .Single() .Element("response") .Value;
if (reader.NodeType == XmlNodeType.Element) { if(reader.Name == "response") { reader.read(); var res = reader.Value; } }
//这个对我有用 !!!!
您可以使用此函数从QuestionXML.xml中存储的xml获取特定questionID的响应。
上述就是C#学习教程:如何使用XmlReader从XML中的特定子元素获取值?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
private string getResponse(string questionID) { string response = string.Empty; using (StreamReader sr = new StreamReader("QuestionXML.xml", true)) { XmlDocument xmlDoc1 = new XmlDocument(); xmlDoc1.Load(sr); XmlNodeList itemNodes = xmlDoc1.GetElementsByTagName("question"); if (itemNodes.Count > 0) { foreach (XmlElement node in itemNodes) { if (node.Attributes["id"].Value.ToString() == questionID.Trim()) { response = node.SelectSingleNode("response").InnerText; break; } } } } return response; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1296961.html