- PR -

ReadXmlでUriFormatException

1
投稿者投稿内容
アキラ
会議室デビュー日: 2003/12/16
投稿数: 9
投稿日時: 2003-12-16 10:01
はじめまして、C#初心者です。
XmlSerializerでシリアライズした文字列をReadXmlで読み込むとUriFormatExceptionが発生します。

public struct Person
{
public string Name;
public int Age;
}

private void button1_Click(object sender, System.EventArgs e)
{
Person[] persons = new Person[2];
persons[0] = new Person();
persons[0].Name = "山田太郎";
persons[0].Age = 17;
persons[1] = new Person();
persons[1].Name = "田中次郎";
persons[1].Age = 21;
XmlSerializer serializer = new XmlSerializer(typeof(Person[]));

StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
serializer.Serialize(xmlWriter, persons);
Trace.WriteLine(stringWriter.ToString());
stringWriter.Close();

DataSet ds = new DataSet();
ds.ReadXml(stringWriter.ToString()); // ここでUriFormatException
}

一旦ファイルに書き込んでから読み込めば正常に読み込めます。
}
・・・

StreamWriter streamWriter = new StreamWriter(@"c:\\sample.xml");
XmlTextWriter xmlWriter = new XmlTextWriter(streamWriter);
serializer.Serialize(xmlWriter, persons);
streamWriter.Close();

DataSet ds = new DataSet();
ds.ReadXml(@"c:\\sample.xml");
}

UriFormatExceptionはどういった場合に発生するのでしょうか?対応策はありますか?
よろしくお願いします。
アキラ
会議室デビュー日: 2003/12/16
投稿数: 9
投稿日時: 2003-12-16 10:20
自己レスです。勘違いをしていました。ReadXmlに文字列を渡すとファイル名として認識するのですね。お騒がせしました。

StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
serializer.Serialize(xmlWriter, persons);
Trace.WriteLine(stringWriter.ToString());

DataSet ds = new DataSet();
StringReader stringReader = new StringReader(stringWriter.ToString());
ds.ReadXml(stringReader); // StringReaderを指定すればok
foreach(DataRow row in ds.Tables[0].Rows)
{
Trace.WriteLine(row["Name"]);
Trace.WriteLine(row["Age"]);
}
1

スキルアップ/キャリアアップ(JOB@IT)