2

私は文字列を持っていたとしましょう

<Records>
         <record id='818591'/>
         <record id='818592'/>
         <record id='818593'/>
         <record id='818594'/>
         <record id='818595'/>
         <record id='818596'/>
         <record id='818597'/>
         <record id='818598'/>
</Records>

C# で、すべての「id」値を抽出して反復処理する方法を教えてください。

私はそれが次のようなものになると仮定しています:

foreach (Match match in Regex.Matches(archerResponse,@"<Records>(<record id='\d*'/>)*</Records>"))
{
       //get value
}

しかし、どうすれば小数を引き出すことができますか?

4

3 に答える 3

1
// main program
using System;
using System.Linq;
using System.Xml.Linq;
using System.Collections;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        public static void Main()
        {
            XDocument doc = XDocument.Parse(@"<Records> <record id='818591'/> <record id='818592'/> <record id='818593'/> <record id='818594'/> <record id='818595'/> <record id='818596'/> <record id='818597'/> <record id='818598'/></Records>");

            foreach (string s in doc.Descendants().Attributes("id").Select(a => a.Value))
            {
                Console.WriteLine(s);
            }
        }
    }
}

または、正規表現を使用することに夢中になっている場合...以下は、使用できる正規表現です。

"id='(.*?)'"

http://rubular.com/r/Pd4NbqDeVw

于 2013-06-14T21:16:56.390 に答える
1

これを試着してサイズを確認してください:

    string text =
        @"<Records><record id='818591'/><record id='818592'/><record id='818593'/><record id='818594'/><record id='818595'/><record id='818596'/><record id='818597'/><record id='818598'/></Records>";

    MatchCollection matches = Regex.Matches(text, @"[0-9]+(\.[0-9][0-9]?)?");

    if(matches.Count > 0)
    {
        foreach (var value in matches)
        {
            Console.Write(value);
        }
    }
于 2013-06-14T21:34:00.423 に答える