0

我有下面的代码,我试图删除所有传递的 html 元素。

String inputString = "<img class="imgRight" title="Zürich, Switzerland" src="test.png" alt="Switzerland" width="44" height="44"/>
<p class="first">Zurich</p>
<p class="second">Test</p>
<p class="first">Testing</p>
<img class="imgRight" title="Zürich, Switzerland" src="1.png" alt="Switzerland" width="44" height="44"/>
<a href="test.aspx">Hello</a>"; //Sample HTML String

String[] htmlTags = new String[] { "a", "img", "link:ComponentLink" };

String removedTagsHtml = RemoveHTMLTags(inputString,htmlTags);//Giving error "There are multiple root elements." 

public static string RemoveHTMLTags(String inputString, String[] htmlTags)
{
    String strResult = String.Empty;
    foreach (String htmlTag in htmlTags)
    {                
        XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml(inputString);
        XmlNamespaceManager xMan = new XmlNamespaceManager(xDoc.NameTable);
        xMan.AddNamespace("xs", xDoc.DocumentElement.NamespaceURI);

        XmlNode xNode = xDoc.SelectSingleNode("xs:" + htmlTag + "", xMan);
        xDoc.RemoveAll();
        xDoc.AppendChild(xNode);
        string seeOutputHere = xDoc.OuterXml;

    }
    return strResult;
}

函数生成错误“有多个根元素。”

4

1 回答 1

0

即使您修复了“多个根元素”的问题(请参阅LINQ to XML - 从文件中加载 XML 片段的示例),一般情况下的 HTML 仍然不是有效的 XML。

对于 HTML 处理,您应该查看 HtmlAgilityPack。

于 2013-05-06T04:54:34.020 回答