如何使用Linq to XML将XML保存在XML文件中?

我正在尝试使用Linq到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;

我认为这是发生b / c的xml编码,但我不知道如何处理它。 这个问题给了我一些线索......但没有答案(至少对我来说)。

谢谢您的帮助,

奥兰


设置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 + "]]>"));

尝试使用currentReport.Element("studio").InnerXml而不是currentReport.Element("studio").Value

链接地址: http://www.djcxy.com/p/42647.html

上一篇: How to save HTML in XML file using Linq to XML?

下一篇: Can't find User Header Paths