0

私はC#でstreamreaderを使用していますが、そのテキストファイルを読み取ることが目標であり、タグ間のテキスト(または)をフィルターで除外し、<Test> </Test><Name> </Name>テストまたは名前)のようなタグの名前を取得して、次の文字列に保存する必要があります。後で使用するためのタグ名。私は数日間インターネットを検索しましたが、何も見つかりません。C#の経験はあまりありませんが、助けてくれる人がいることを願っています。ファイル自体は.txtファイルです

これが私が今まで持っているコードです:

class Program
    {
        static void Main(string[] args)
        {

            using (StreamReader sr = new StreamReader(@"C:\testfile.txt"))
            {

                String line;
                // Read line by line
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);

                }
            }
            Console.ReadKey();
        }

    }

期待される出力は、たとえば、name =プレーンテキストのnameタグ間のすべて、次にtest=プレーンテキストのテストタグ間のすべての文字列です。私の悪い英語で申し訳ありませんが、私を助けてくれる人がいることを願っています。

4

3 に答える 3

2

XmlDocumentを使用できます

        XmlDocument Info_Document = new XmlDocument();
        Info_Document.Load(@"D:\saraxml.txt");
        XmlNodeList xmlnodelist = Info_Document.GetElementsByTagName("Name");//finding all nodes called "Name"
            foreach (XmlNode c in xmlnodelist)
            {
               string _name=c.InnerText;
            }

このファイルの場合:

<test>
<Name> h0</Name>

<Name> h1</Name>

<Name> h2</Name>

<Name> h3</Name>

<Name> h4</Name>

<Name> h5</Name>
</test>

私が得た:

h0

h1

h2

h3

h4

h5

于 2012-11-14T08:21:52.303 に答える
0

ファイルがHTMLの場合、HTML Agilityパックを使用し てファイルを解析し、タグ名で結果を照会できます。これは、ネストされたタグ、不十分に構築されたhtmlなど、すべての複雑さをはるかにうまく処理するため、正規表現よりも優先されます。正規表現でHTMLを解析しようとすると、狂気につながる可能性があります。

純粋なXMLの場合は、同様の方法でXMLDocumentを使用できます。

それ以外の場合は、はるかに複雑で時間のかかるエンタープライズであるカスタムパーサーを作成する必要があります。

ファイルが正規文法に準拠している場合は、再帰下降パーサーを作成できます。

于 2012-11-14T08:21:18.497 に答える
0

正規表現を使用してテキストをフィルタリングすることをお勧めします。

http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.aspx

1つの例がここにあります:

http://www.dotnetperls.com/remove-html-tags

于 2012-11-14T08:15:53.827 に答える