0

このようなログファイルがあります..

This is the segment 1
============================

<MAINELEMENT><ELEMENT1>10-10-2013 10:10:22.444</ELEMENT1><ELEMENT2>1111</ELEMENT2>    
   <ELEMENT3>Message 1</ELEMENT3></MAINELEMENT>
<MAINELEMENT><ELEMENT1>10-10-2013 10:10:22.555</ELEMENT1><ELEMENT2>1111</ELEMENT2>   
   <ELEMENT3>Message 2</ELEMENT3></MAINELEMENT>

This is the segment 2
============================

<MAINELEMENT><ELEMENT1>10-11-2012 10:10:22.444</ELEMENT1><ELEMENT2>2222</ELEMENT2>    
   <ELEMENT3>Message 1</ELEMENT3></MAINELEMENT>
<MAINELEMENT><ELEMENT1>10-11-2012 10:10:22.555</ELEMENT1><ELEMENT2>2222</ELEMENT2>   
   <ELEMENT3>Message 2</ELEMENT3></MAINELEMENT>

これを読み取って、データと行を完全にDataTable除外するにはどうすればよいですか。This is the segment 1This is the segment 2======

DatatableColumns に as"ELEMENT1", "ELEMENT2", "ELEMENT3"を付けて、行の印刷順にそれらのタグの間の内容で詳細を埋めたいと思います。

挿入中にテーブル内のレコードの順序を変更しないでください。

4

3 に答える 3

1

HtmlAgilityPackは、必要なものに適したツールのようです。

using HtmlAgilityPack;

class Program
{
    static void Main(string[] args)
    {
        var doc = new HtmlDocument();
        doc.Load("log.txt");
        var dt = new DataTable();
        bool hasColumns = false;
        foreach (HtmlNode row in doc
            .DocumentNode
            .SelectNodes("//mainelement"))
        {
            if (!hasColumns)
            {
                hasColumns = true;
                foreach (var column in row.ChildNodes
                    .Where(node => node.GetType() == typeof(HtmlNode)))
                {
                    dt.Columns.Add(column.Name);
                }
            }
            dt.Rows.Add(row.ChildNodes
                .Where(node => node.GetType() == typeof(HtmlNode))
                .Select(node => node.InnerText).ToArray());
        }
    }
}
于 2013-07-11T11:45:46.853 に答える
-1

どこに問題があるのか​​ よくわかりません。

XElement を使用して、xml を読み取り、DataTable を手動で作成できます。XML の読み取りについては、XElement を使用した Xml の解析を参照してください。

次に、データテーブルを動的に作成できます。コードでデータテーブルを作成する例を次に示します https://sites.google.com/site/bhargavaclub/datatablec

しかし、なぜ DataTable を使いたいのでしょうか? デメリットが多い…

于 2013-07-11T11:15:05.410 に答える