0

我一直在寻找类似的问题,但每一个都很容易解决(双 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" - 顺便说一下,这些是我的 jqplot 图表的值。

问题是,这种解析方法保存到列出每隔一个“p”节点;此 XML 文件中有 20 个“p”节点,但我的解析器仅保存 10 个元素(每隔一个,从第一个开始);

我究竟做错了什么?

4

1 回答 1

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,使其更通用。

于 2013-05-20T14:30:52.553 回答