XmlWriter.WriteRaw экранирует XML, когда писатель был создан с помощью XElement.CreateWriter - PullRequest
5 голосов
/ 23 февраля 2012

Я заметил, что XmlWriter.WriteRaw, кажется, не работает должным образом (он экранирует символы xml), когда средство записи создается с помощью XElement.CreateWriter.Приведенный ниже тестовый пример воспроизводит проблему.Мое использование неверно?Кто-нибудь знает, как добиться желаемого поведения?Мне нужно иметь возможность написать необработанную строку XML в XmlWriter и включить этот XML в XElement.

[Test]
public void XElementWriterTest()
{
    var xelement = new XElement("test");
    using (var writer = xelement.CreateWriter())
    {
        writer.WriteRaw(@"<some raw='xml' />");
    }
    Assert.That(xelement.ToString(), Is.EqualTo(@"<test><some raw='xml' /></test>"));
    // actual : "<test>&lt;some raw='xml' /&gt;</test>"
}

1 Ответ

0 голосов
/ 01 октября 2012

Является ли XElement.Parse () опцией для вас?

[TestMethod]
public void XElementWriterTest()
{
    var xelement = new XElement("test");
    const string newXML = @"<some raw='xml' />";
    var child = XElement.Parse(newXML);
    xelement.Add(child);
    Assert.AreEqual(xelement.ToString(SaveOptions.DisableFormatting), @"<test><some raw=""xml"" /></test>");
}
...