none
[菜鳥問題]擷取XML的部分區段 RRS feed

  • 問題

  • 各位高手,小弟最近開始寫C# 很沒概念

    想要請教關於C#讀取XML的問題

     

    今天有一篇XML文件(schema.xml):

    <Range>

    <StartAs>1</StartAs>

    <Count>100</Count>

    <TotalAvaible>127</TotlaAvaible>

    <Results>

    <Document>

    <Url>http://xxx</Url>

    <Title>hello</Title>

    </Document>

    <Document>

    <Url>http://xxx2</Url>

    <Title>hello2</Title>

    </Document>

    :

    :

    </Results>

    </Range>

     

    想要寫個程式來讀取他,比如設定一個變數StartAs存放StartAs的資料 "1"

    我打算寫一個資料結構來存放一直重複的Document,這樣可以用foreach來讀取

     

    我想問:

    要如何讓xmlReader跳到Results的區段裡面單獨跑回圈執行

     

    意思是說將

    <Document>

    <Url>http://xxx</Url>

    <Title>hello</Title>

    </Document>

    <Document>

    <Url>http://xxx2</Url>

    <Title>hello2</Title>

    </Document>

    :

    :

    這段XML擷取出來,依序讀取,讓我用 .add加入List裡面

    或是有什麼一般在使用的方法,可以供我參考

     

    我表達能力不好,又學藝不精,已經從昨天吃完晚餐Live到現在,希望能指引一下 :-)

    感激!!

    2007年9月18日 上午 07:13

解答

  • Code Snippet

    private List<string> url = new List<string>();
    private List<string> title = new List<string>();

     

    private void button1_Click(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("schema.xml");

     

        XmlNode root = doc.DocumentElement;
        XmlNodeList nodeList = root.SelectNodes("descendant::Document");
        foreach (XmlNode docNode in nodeList)
        {
            foreach (XmlNode node in docNode.ChildNodes)
            {
                if(node.Name == "Url")
                {
                    url.Add(node.InnerText);
                }
                else if (node.Name == "Title")
                {
                    title.Add(node.InnerText);
                }
            }
        }
    }

     

     

     

    Url => http://xxx, http://xxx2

    Title => hello, hello2

     

    參考 XmlNode.SelectSingleNode

     

     

     

    2007年9月18日 下午 02:17