创建新文件时如何添加XML声明?

时间:2019-07-17 22:51:30

标签: c# xml declaration xmlwriter

发生确定性事件时,我正在创建XML文件。

我已经尝试了某些人在另一个类似问题中回答的内容,但是它似乎没有用,因为它仍然缺少声明。

此XML文件包含以下元素:

Data
User
Number
Age
Gender
Nickname
Ability
Result
DateAndTime

但是,我需要显示XML声明。像这样

  

?xml version =“ 1.0” encoding =“ UTF-8”?>

此声明未显示在文件中。

我正在使用以下代码:

        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        settings.NewLineOnAttributes = true;
        nombre = Code + file_count;
        XmlWriter writer = XmlWriter.Create(Data._XmlLocation + Folder + nombre + ".xml", settings);
        writer.Close();
        XmlTextWriter xw = new XmlTextWriter(Data._XmlLocation + Folder + nombre + ".xml", Encoding.UTF8);
        xw.Formatting = Formatting.Indented;
        string[] elements = { "Data", "User", "Number", "Age", "Gender", "Nickname", "Ability", "Result", "DateAndTime", };
        string[] eleValues = { "", Datos, Usuario, "", "", Number, "25", Gender, Date + " " + Hour };
        for (int i = 0; i < elements.Length; i++)
        {
            string en = elements[i];
            string ev = eleValues[i];
            xw.WriteStartElement(en); if (ev != "")
            {
                xw.WriteString(ev); xw.WriteEndElement();
            }
        }
        for (int i = 0; i < elements.Length; i++)
        {
            if (eleValues[i] == "") xw.WriteEndElement();
        }
        xw.Close();

此代码生成如下文件:

<Data>
  <User/>
  <Number />
  <Age> 25 </Age>
    <Gender>
      <Nickname>
        <Ability>Continuity Test</Ability>
        <Result>FAILED</Result>
        <DateAndTime> </DateAndTime>
      </Nickname>
     </Gender> 
</Data>

我为之工作:

<?xml version="1.0" encoding="utf-8"?>
<Data>
  <Name>Eduardo</Name>
  <Number>24562</Number>
  <Gender>
    <Nickname>
      <Key>PASS</Key>
      <Ability>Continuity Test</Ability>
      <Result>PASSED</Result>
      <DateAndTime>2019/07/17 23:09:14:860</DateAndTime>
    </Nickname>
  </Gender>
</TestData>

我需要显示此声明。谢谢!

1 个答案:

答案 0 :(得分:0)

您将要摆脱声明的多余XmlTextWriter,并在将其标记为文档的设置中添加一个ConformanceLevel。

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
settings.ConformanceLevel = ConformanceLevel.Document; // This is the default value, so it's not strictly necessary to set for your purposes.
XmlWriter xw = XmlWriter.Create(path, settings);

其余的代码很好(一旦您删除了XmlTextWriter的声明)