在c#上使用WriteStartElement()创建XML文件时出现异常
本文关键字:文件 XML 异常 创建 WriteStartElement | 更新日期: 2023-09-27 18:15:48
抛出异常的代码如下
#region Header
if (textBox2.Text != "")
{
try
{
xmlTW.WriteStartElement("Header");
xmlTW.WriteRaw(Environment.NewLine);
xmlTW.WriteString(textBox2.Text);
xmlTW.WriteRaw(Environment.NewLine);
xmlTW.WriteEndElement();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
#endregion
#region Body
if (textBox3.Text != "")
{
try
{
xmlTW.WriteStartElement("Rectangles");
xmlTW.WriteRaw(Environment.NewLine + textBox3.Text + Environment.NewLine);
xmlTW.WriteEndElement();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
#endregion
所以,问题是只有当两个文本框中的一个填充了数据时,代码才会顺利运行,如果它们都包含文本,那么在WriteEndDocument();
处会出现无效操作异常。我知道这一定是什么简单的东西,但是我就是想不出来。如有任何帮助,不胜感激。
格式良好的XML必须有一个单个根元素。以下是格式良好的XML:
<Header>
Some text
</Header>
是良构的,因为Header
是根元素。但是,下面的语句不是格式良好的:
<Header>
Some text
</Header>
<Rectangles>
Some other text
</Rectangles>
要纠正它,你必须把它放在某个根元素中。
<myRoot>
<Header>
Some text
</Header>
<Rectangles>
Some other text
</Rectangles>
</myRoot>
需要设置XmlWriterSettings
的ConformanceLevel为Fragment
。
这将使您能够保留您想要的xml结构,而无需添加根元素
var xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.ConformanceLevel = ConformanceLevel.Fragment;
创建你的XML,像这样写:
XmlWriter xmlTW = XmlWriter.Create("myFile.xml", xmlWriterSettings)
这个链接可以帮助你开始使用XmlWriter