c# - 如何使用 Linq to XML 将 HTML 保存在 XML 文件中?

标签 c# html xml linq-to-xml

我正在尝试使用 Linq to XML 在 XML 文件和 Windows 窗体应用程序之间保存和检索一些 HTML。将其保存到 XML 文件时,HTML 标记会进行 xml 编码,并且不会保存为纯 HTML。

示例 HTML:

<P><FONT color=#004080><U>Sample HTML</U></FONT></P>

保存在 XML 文件中:

&lt;P&gt;&lt;FONT color=#004080&gt;&lt;U&gt;Sample HTML&lt;/U&gt;&lt;/FONT&gt;&lt;/P&gt;

当我手动编辑 XML 文件并放入所需的 HTML 时,Linq 会提取 HTML 并正确显示它。

这是将 HTML 保存到 XML 文件的代码:

XElement currentReport = (from item in callReports.Descendants("callReport")
                                  where (int)item.Element("localId") == myCallreports.LocalId
                                  select item).FirstOrDefault();

        currentReport.Element("studio").Value = myCallreports.Studio;
        currentReport.Element("visitDate").Value = myCallreports.Visitdate.ToShortDateString();
       // *** The next two XElements store the HTML
        currentReport.Element("recomendations").Value = myCallreports.Comments;
        currentReport.Element("reactions").Value = myCallreports.Ownerreaction;

我假设这是 xml 编码的 b/c,但我不确定如何处理它。 This question给了我一些线索……但没有答案(至少对我而言)。

感谢您的帮助,

奥兰

最佳答案

设置 Value 属性将自动对 html 字符串进行编码。这应该可以解决问题,但您需要确保您的 HTML 是有效的 XML (XHTML)。

currentReport.Element("recomendations").ReplaceNodes(XElement.Parse(myCallreports.Comments));

编辑:您可能需要将用户输入的 HTML 包装在 <div> </div> 中标签。 XElement.Parse期望找到至少具有开始和结束 xml 标记的字符串。所以,这可能会更好:

currentReport.Element("recomendations").ReplaceNodes(XElement.Parse("<div>" + myCallreports.Comments + "</div>"));

然后你只需要确保像<br>这样的标签正在作为 <br /> 发送.

编辑 2: 另一个选项是使用 XML CDATA .用 <![CDATA[ 包装 HTML和 ]]> ,但我从未实际使用过它,我不确定它如何影响读取 xml。

currentReport.Element("recomendations").ReplaceNodes(XElement.Parse("<![CDATA[" + myCallreports.Comments + "]]>"));

关于c# - 如何使用 Linq to XML 将 HTML 保存在 XML 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967433/

相关文章:

java - 如何使用 org.w3c.dom 在属性之间添加新行。 JAVA 中的 XML

c# - 如何隐藏 WPF 网格溢出(如 CSS 溢出 :hidden)

c# - 使用自定义字体在标签中绘制文本时参数无效

html - 使用 flexbox 将一个元素移动到列表的末尾

javascript - 使用 raphael js 和 animate 一起创建一组路径

ajax - WhitePages API 的替代品?

android - android布局中的错误定位

C# 等效于具有 init block 的 Java 匿名内部类

c# - Linq 未按预期执行

jquery - 使用 Ajax 上下文刷新页面的一部分