我一直在寻找类似的问题,但每一个都很容易解决(double reader.Read()方法),但我的很奇怪......
这是我的ASP.NET C#方法:
private IEnumerable<XElement> getXMLData(String inputURI, String elementName)
{
List<XElement> result = new List<XElement>();
XmlReader reader = XmlReader.Create(inputURI);
XElement elem;
reader.MoveToContent();
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.Name.Equals(elementName))
{
elem = XNode.ReadFrom(reader) as XElement;
if (elem != null)
{
result.Add(elem);
}
}
}
}
return result;
}
我正在尝试解析以下URI: http://chartapi.finance.yahoo.com/instrument/1.0/aapl/chartdata;type=quote;range=1m/
我选择elemName =“p” - 顺便说一句,theese是我的jqplot图表的值。
问题是,这个解析方法保存到列出每个其他“p”节点;这个XML文件中有20个“p”节点,但我的解析器只保存了10个元素(每个节点从第一个开始);
我做错了什么?
答案 0 :(得分:1)
更简洁的解决方案可能如下所示 -
using (var client = new WebClient())
{
string s = client.DownloadString("http://chartapi.finance.yahoo.com/instrument/1.0/aapl/chartdata;type=quote;range=1m/");
var xDoc = XDocument.Parse(s);
var result = xDoc.Descendants("p").ToList();
return result;
}
将URL替换为传递给方法的URL字符串,使其更通用。