当前位置:  开发笔记 > 前端 > 正文

使用LINQ to XML将HTML标记保存在XML中

如何解决《使用LINQtoXML将HTML标记保存在XML中》经验,为你挑选了1个好方法。

我有一个xml文件,我使用LINQ to XML从中提取html.这是该文件的示例:



    
    This is the first tip.


    Use Windows Live Writer or Microsoft Word 2007 to create and publish content.


    Enter a url into the box to automatically screenshot and index useful webpages.


    Invite your colleagues to the site by entering their email addresses.  You can then share the content with them!


我使用以下查询从文件中提取"提示":

Tip tip = (from t in tipsXml.Descendants("tip")
                   where t.Attribute("id").Value == nextTipId.ToString()
                   select new Tip()
                   {
                     TipText= t.Value,
                     TipId = nextTipId
                   }).First();

我遇到的问题是Html元素被剥离了.我希望使用像InnerHtml这样的东西代替Value,但这似乎并不存在.

有任何想法吗?

提前全部谢谢,

戴夫



1> Jon Skeet..:

打电话t.ToString()而不是Value.这将把XML作为字符串返回.您可能希望使用带有SaveOptions的重载来禁用格式化.我现在无法检查,但我怀疑它将包含元素标签(和元素),因此您需要将其剥离.

请注意,如果您的HTML不是有效的XML,则最终会得到无效的整体XML文件.

XML文件的格式是否完全不受您的控制?任何HTML内部都可以更好地进行XML编码.

编辑:避免获取外部部分的一种方法可能是做这样的事情(当然是从查询调用的单独方法):

StringBuilder builder = new StringBuilder();
foreach (XNode node in element.Nodes())
{
    builder.Append(node.ToString());
}

这样,您将获得带有后代和散布文本节点的HTML元素.基本上它相当于InnerXml,我强烈怀疑.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有