如何使用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文件中:
<P><FONT color=#004080><U>Sample HTML</U></FONT></P>
当我手动编辑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