【发布时间】:2012-12-07 19:37:27
【问题描述】:
我的字符串中的 HTML 如下所示:
<div id="control">
<a href="/xx/x">y</a>
<ul>
<li><a href="/C003Q/x" class="dw">x</a></li>
<li><a href="/C003R/xx" class="dw">xx</a></li>
<li><a href="/C003S/xxx" class="dw">xxx</a></li>
</ul>
</div>
我想将其更改为以下内容:
<div id="control">
<a data-href="/xx/x" ><span>y</span></a>
<ul>
<li><a data-href="/C003Q/x" class="dw"><span>x</span></a></li>
<li><a data-href="/C003R/xx" class="dw"><span>xx</span></a></li>
<li><a data-href="/C003S/xxx" class="dw"><span>xxx</span></a></li>
</ul>
</div>
我听说过 regex,但我不确定如何使用它来更改地址标签内的内容并同时更改 href。我是否需要使用 regex 两次,我可以使用 regex 更改 <a ... >...</a> 的内部还是使用 C# 有更简单的方法?
【问题讨论】:
-
您可以将 Html 视为 XML 并使用 XMLReader 编辑 元素中的文本。看看 XmlDocument 类。
-
您可以查看 [如何从 html 中删除特定标签][1] 和 [如何使用 HTML 敏捷包][2] [1]:stackoverflow.com/questions/13955247/… [2 ]:stackoverflow.com/questions/846994/how-to-use-html-agility-pack
-
@StianStandahl - 如果 HTML 不是有效的 XML(没有根元素,有效 HTML的元素,例如
<br>等...跨度> -
为什么不使用 XDocument 而不是 XmlDocument?如果 html 格式正确,您可以使用其中任何一个
-
@Oded - 用于 html 4。是的。我认为使用 Html 5 它应该可以工作。但我没有考虑未封闭的元素。很好的收获:)
标签: c#