当通过 XElement.CreateWriter 创建编写器时,XmlWriter.WriteRaw 转义 xml

发布于 2025-01-08 12:31:34 字数 581 浏览 0 评论 0原文

我注意到,当使用 XElement.CreateWriter 创建编写器时,XmlWriter.WriteRaw 似乎无法正常工作(它转义 xml 字符)。下面的测试用例重现了该问题。是我的用法不正确吗?有谁知道如何实现所需的行为?我需要能够将原始 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>"
}

I have noticed that XmlWriter.WriteRaw appears to not work properly (it escapes xml characters) when the writer is created using XElement.CreateWriter. The below test case reproduces the problem. Is my usage incorrect? Does anyone know how to achieve the desired behavior? I need to be able to write a raw xml string to an XmlWriter and incorporate that xml into an 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><some raw='xml' /></test>"
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

老旧海报 2025-01-15 12:31:34

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>");
}

Is XElement.Parse() an option for you at all?

[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>");
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文