如何在属性名称中选择带通配符的元素?

时间:2012-04-19 11:12:03

标签: xpath wildcard html-agility-pack

我有这个HTML标签:

<div id="23a521b6-5a90-4257-9ee3-17a2cbe8a8fc" jquery17208007497985234224="13"  jquery172080076755224="4"></div>

我需要帮助来选择这个div,其中属性名称是jquery *进行清理,最终结果将是:

<div id="23a521b6-5a90-4257-9ee3-17a2cbe8a8fc"></div>

谢谢, 查帕斯

2 个答案:

答案 0 :(得分:1)

不确定您正在使用哪种技术,但要使用XSLT去除这些属性:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
  <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
<xsl:template match="@*[starts-with(local-name(), 'jquery')]"/>
</xsl:transform>

答案 1 :(得分:0)

我选择以jquery字符串开头的所有属性,然后使用AgilityPack删除它们:

var doc = new HtmlDocument();
doc.LoadHtml(html);
var attributes = doc.DocumentNode
    .Descendants()
    .SelectMany(n => n.Attributes.Cast<HtmlAttribute>())
    .Where(a => a.Name.StartsWith("jquery"))
    .ToArray();

foreach (var attribute in attributes)
    attribute.Remove();

这会给你类似的东西:

<div id="23a521b6-5a90-4257-9ee3-17a2cbe8a8fc"></div>