0

我有以下 HTML 标记

<p>xxxx</p>
 <pre>xxx</pre>
 <p>xxxx</p>
 <pre>yyy</pre>

我需要能够将其更改为:

<p>xxxx</p>
 <pre>ABC xxx ABC</pre>
 <p>xxxx</p>
 <pre>ABC yyy ABC </pre>

我有一个使用建议:

   var loDoc = XDocument.Parse(lcHTML);
   foreach (XElement loElement in loDoc.Descendants("pre"))

这确实提取了所有 pre 元素,但它并没有给我一种将事物联系在一起并将代码重新插入原始字符串的方法。

有没有另一种方法可以让我进行所需的代码更改。我正在考虑使用 split 和 split<pre>..</pre>但这并不能真正给我我需要的东西,因为我需要替换里面的代码<pre>...</pre>

4

3 回答 3

1

一种可能是使用XDocument,但它必须是有效的 XHTML,并且您需要引入一个根节点:

public class Program
{
    static void Main()
    {
        var doc = XDocument.Parse(
            @"<html>
              <p>xxxx</p>
              <pre>xxx</pre>
              <p>xxxx</p>
              <pre>yyy</pre>
            </html>"
        );
        foreach (var pre in doc.Descendants("pre"))
        {
            pre.Value = string.Format("ABC {0} ABC", pre.Value);         
        }
        Console.WriteLine(doc);
    }
}

另一种可能性是使用Html Agility Pack

public class Program
{
    static void Main()
    {
        var doc = new HtmlDocument();
        doc.LoadHtml(
            @"<p>xxxx</p>
              <pre>xxx</pre>
              <p>xxxx</p>
              <pre>yyy</pre>"
        );
        foreach (var pre in doc.DocumentNode.Descendants("pre"))
        {
            pre.InnerHtml = string.Format("ABC {0} ABC", pre.InnerHtml);         
        }
        Console.WriteLine(doc.DocumentNode.OuterHtml);
    }
}
于 2012-10-05T06:18:49.137 回答
0

从此链接获取 XML Doc 元素How to read HTML as XML?

使用 doc 元素,尝试

XmlElement root = doc.DocumentElement; 

XmlNodeList nodes = root.SelectNodes("pre"); 

foreach (XmlNode node in nodes) {
   node.value = "ABC" + node.value + "ABC";
} 
于 2012-10-05T06:18:54.973 回答
0

How about using Strings instead of xml?

String xmlString = ... \\ get string representation from somewhere
xmlString = xmlString.Replace( "<pre>", "<pre>ABC " ); 
xmlString = xmlString.Replace( "</pre>", " ABC </pre>" ); 
于 2012-10-05T06:24:05.730 回答