簡體   English   中英

如何使用 XmlTextWriter 使 XML 元素自動關閉

[英]How to make XML elements self closing with XmlTextWriter

        var fileName = @"C:\Users\MrHer\source\repos\PlaylistGen-main\TestPlaylistGenerator\TestPlaylistGenerator\TestPlaylistGenerator\bin\Debug\netcoreapp3.1\FailedTests.Playlist";
        XmlTextWriter xmlWriter = new XmlTextWriter(fileName, System.Text.Encoding.UTF8);
        xmlWriter.Formatting = System.Xml.Formatting.Indented;
        xmlWriter.WriteStartElement("Playlist");
        xmlWriter.WriteAttributeString("Version", "1.0");

        foreach (var test in failedTestNames)
        {
            xmlWriter.WriteElementString("Add Test", test);
        }

        xmlWriter.WriteEndElement();
        xmlWriter.Flush();
        xmlWriter.Close();

這是我當前用於生成我正在尋找的文件的代碼,當前 output 如下所示 -

<Playlist Version="1.0">
  <Add Test>xxxxxxxxxxxxxxxxxxx</Add Test>
  <Add Test>xxxxxxxxxxxxxxxxxxx</Add Test>
</Playlist>

我需要知道如何將“添加測試”元素變成一個自閉合標簽,所以它應該看起來像 -

<Playlist Version="1.0">
  <Add Test="xxxxxxxxxxxxxxxxxxx" />
  <Add Test="xxxxxxxxxxxxxxxxxxx" />
</Playlist>

編輯:

我嘗試將“WriteAttributeString”用於“添加測試”元素,但這最終只是將“添加測試”元素格式化為播放列表的開始元素,所以它只是一條大線。

您沒有自閉合元素的原因是因為您將“xxx”作為元素內部的傳遞。 同樣在您的示例中,元素名稱包含一個空格,這些給人的印象是您越來越接近最終結果。 相反,您必須表示開始編寫新元素“Add”,添加一個名為“test”的屬性,然后關閉一個標簽。 Writer 將決定在沒有文本的情況下關閉它(即使沒有空文本),因為沒有給節點賦值,也沒有嘗試寫入完整的結尾。

Console.OutputEncoding = Encoding.UTF8;
using var xmlWriter = new XmlTextWriter(Console.OpenStandardOutput(), Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartElement("Playlist");
xmlWriter.WriteAttributeString("Version", "1.0");

foreach (var test in new[] {"abc", "def"})
{
    xmlWriter.WriteStartElement("Add");
    xmlWriter.WriteAttributeString("Test", test);
    xmlWriter.WriteEndElement();
}

xmlWriter.WriteEndElement();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM