XmlWriterを使用すると、別のプロセスで使用されているというコードがクラッシュします。
private void generateXml(Control receivedControl)
{
foreach (Control subCtrl in receivedControl.Controls)
{
using (XmlWriter writer = XmlWriter.Create("C:\\ui.xml"))
{
writer.WriteStartElement(subCtrl.Name);
generateXml(subCtrl);
writer.WriteEndElement();
}
}
}
private void button2_Click(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
generateXml(c);
}
}
これが私がデバッグするエラーです:
追加情報:別のプロセスによって使用されているため、プロセスはファイル'C:\ui.xml'にアクセスできません。
編集:あなたのおかげで私は再帰を機能させることができましたが、それはxmlファイルの最後のオブジェクトのみを書き込みます、誰もが理由を知っていますか?更新されたコードは次のとおりです。
private void generateXml(XmlWriter receivedWriter, Control receivedControl)
{
receivedWriter.WriteStartElement(receivedControl.Name);
foreach (Control subCtrl in receivedControl.Controls)
{
generateXml(receivedWriter, subCtrl);
}
receivedWriter.WriteEndElement();
}
private void button2_Click(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using(XmlWriter writer = XmlWriter.Create("c:\\ui.xml", settings))
{
writer.WriteStartDocument();
writer.WriteStartElement("Form");
generateXml(writer, c);
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
}