使用WriteStartElement()在c#上创建XML文件时出现异常

时间:2013-05-27 18:45:17

标签: c# xmlwriter

所以这是抛出异常的代码

    #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()中获得无效的操作异常;

我知道它一定很简单,但我无法弄明白:P。 任何帮助表示赞赏。

提前致谢。

2 个答案:

答案 0 :(得分:4)

格式良好的XML必须具有 Single 根元素。以下是格式良好的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>

答案 1 :(得分:3)

您需要将XmlWriterSettings一致性级别设置为Fragment

这将使您能够保留所需的xml结构而无需添加根元素

var xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.ConformanceLevel = ConformanceLevel.Fragment;

并创建xml这样写:

XmlWriter xmlTW = XmlWriter.Create("myFile.xml", xmlWriterSettings)

This链接可以帮助您开始使用XmlWriter