0

所以这是引发异常的代码

    #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。任何帮助表示赞赏。

提前致谢。

4

2 回答 2

4

格式良好的 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>
于 2013-05-27T19:00:55.410 回答
3

您需要将XmlWriterSettingsConformanceLevel 设置为Fragment.

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

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

并像这样创建你的xml:

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

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

于 2013-05-27T19:08:03.877 回答