0

以下に非常にハードコーディングされた XML リーダーがあります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
using System.Diagnostics;

namespace XML
{
    class Program
    {
        static void Main(string[] args)
        {
        // XML text reader stuff
            XmlTextReader textReader = new XmlTextReader("H:\\User\\Desktop\\secLendingXML.cfm.xml");
        //string[] Fed_Array = new string[] {"Actual Available to Borrow", "Outstanding Loans",
        //"Par Submitted", "Par Accepted", "WTD Average Rate"};
        int j = 0;
    // Trace listener stuff.
        Stream myFile = File.Create("H:\\User\\Desktop\\Fed_Sec_Lending.txt");
        TextWriterTraceListener myTextListener = new TextWriterTraceListener(myFile);
        Trace.Listeners.Add(myTextListener);
        while (textReader.Read())
        {
            switch (textReader.NodeType)
            {
                case XmlNodeType.Element:
                    for (int i = 0; i < textReader.AttributeCount; i++)
                    {
                        textReader.MoveToAttribute(i);
                        switch (textReader.Name)
                        {
                            case "securityMaturityDate": 
                                Trace.Write(textReader.Value + ",");
                                Console.Write(textReader.Value + ",");
                                break;
                            case "couponRate":
                                Trace.Write(textReader.Value + ",");
                                Console.Write(textReader.Value + ",");
                                break;
                            case "securityType":
                                Trace.Write(textReader.Value + ",");
                                Console.Write(textReader.Value + ",");
                                j = 0;
                                break;
                            case "value":
                                Trace.Write(textReader.Value + ",");
                                Console.Write(textReader.Value + ",");
                                j = j + 1;
                                if (j > 4)
                                {
                                    Trace.Write(Environment.NewLine);
                                    Console.Write(Environment.NewLine);
                                }
                                break;

                            }
                        }
                        break;
                }
            }
        }
    }
}

私のデスクトップからこのXML ページを読み取ることは、ほとんどの場合うまく機能しているようです。ただし、トレース ライターは、コンソール出力と同じデータを書き込んでいないようです。ここにコンソール出力のスナップショットがあり、Trace が書き込んでいるテキスト ファイルの下部がここにあります。ご覧のとおり、最後の数行が一致していません。

何らかの理由で、テキスト ファイルは、コンソールと同じ出力を受け取っているはずですが、受け取っていません。ここでテキスト ファイルが短く切り捨てられている理由を誰かが理解できる理由はありますか?

4

1 に答える 1

0

Trace Writer を Streamwriter に置き換えることで、この質問に答えることができました。

using (StreamWriter writer = new StreamWriter("H:\\myName\\Desktop\\Fed_Sec_Lending.txt"))

すなわち

string textvalmatd = textReader.Value;
writer.Write(textvalmatd + ",");

すべての場合:

Trace.Write(textvalmatd + ",");

だっただろう。

コメントしてくれた数少ない人の助けに感謝します。

于 2012-06-25T20:25:42.697 に答える