0

オブジェクトからXMLドキュメントにデータを書き込もうとしていて、オンラインチュートリアルに従っていますが、理解できない問題が発生しました。これは、作成を開始するために使用しているコードです。ドキュメントがusing (XmlWriter writer = XmlWriter.Create("myData.xml"))あり、「myData.xml」でエラーが発生します。発生するエラーは次のとおりです。

The best overload method match for 'System.Xml.XmlWriter.Create(System.Xml.XmlWriter)'
has some invalid arguments

Argument 1: cannot convert from 'string' to 'System.Xml.XmlWriter'

XmlWriterはWindowsPhoneと互換性がありますか?そうでない場合は、ファイルに書き込む大量のコードを変更する必要がありますか?

編集:これが私のコードです

        string output = SerializeToString<AppData>(rulesData);

        using (XmlWriter writer = XmlWriter.Create(output))
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("myData");

            writer.WriteElementString("Starting Cash", rulesData.myStartingCash);
            writer.WriteElementString("Land on Go Data", rulesData.myLandOnGo);
            writer.WriteElementString("Free Parking Data", rulesData.myFreeParking);
            writer.WriteElementString("Full Circuit Data", rulesData.myFullCircuit);
            writer.WriteElementString("Auction Data", rulesData.myAuction);
            writer.Flush();

            writer.WriteEndElement();
            writer.WriteEndDocument();
        }

ありがとう!-ライアン

4

1 に答える 1

1

次のコードを使用できます。

   public static void SerializeToStream<T>(Stream stream, object model)
   {
        var writer = XmlWriter.Create(stream);
        var s = new XmlSerializer(typeof(T));
        s.Serialize(writer, model);
    }

    public static string SerializeToString<T>(object model)
    {
        var xmlSer = new XmlSerializer(typeof(T));

        using (var stream = new MemoryStream())
        {
            SerializeToStream<T>(stream, model);
            var s = stream.ToArray();
            return System.Text.Encoding.UTF8.GetString(s, 0, s.Length);
        }
    }

    public static void SerializeToFile<T>(string filename, object model)
    {
        using (FileStream stream = File.Open(filename, FileMode.Create))
        {
            SerializeToStream<T>(stream, model);
        }
    }

ストリームの代わりに文字列をXmlWriterに渡すため、コードはコンパイルされません

使用法:

  string output = SerializeToString<ClassName>(instanceOfClass);
于 2012-12-08T20:10:33.340 に答える