0

私は同様の問題を探していましたが、それらはすべて簡単に解決できます(ダブルリーダー.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 個の要素しか保存しません (1 つおきに最初から開始します)。

私は何を間違っていますか?

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 に答える