gpt4 book ai didi

c# - 需要帮助...使用 XPath 从条件注释中选择 HTML 标签

转载 作者:行者123 更新时间:2023-11-30 18:01:31 25 4
gpt4 key购买 nike

我对 XPath 有点陌生所以提前原谅我。我希望能够搜索 HTML 评论,特别是条件评论,并只返回某些标签,例如 <link><script> .

到目前为止,我已经能够返回包含这些标签的评论集合://comment()[contains(.,'link') or contains(.,'script')] ,但在这一点上,我不确定如何将实际标签本身提取为具有属性的节点。

谁能帮帮我?

这是我尝试从中检索各种元素的示例:我需要能够获取链接和脚本元素。可能还应该提到我正在使用 C# 和 HTML Agility Pack。

<head>
<!--[if IE 7]>
<link rel="stylesheet" href="/layout/css/IE7.css" />
<![endif]-->
<!--[if IE 9]>
<link rel="stylesheet" href="/layout/css/IE9.css" />
<![endif]-->
</head>

最佳答案

So far I've been able to return a collection of the comments that contain those tags with: //comment()[contains(.,'link') or
contains(.,'script')]
, but at this point, I'm not sure how to extract the actual tags themselves as nodes with attributes.

这无法完成,因为在 XPath 表达式求值时,注释内没有节点——只有字符串。

可以做的是获取想要的字符串

例如,当上下文节点是两个注释之一时,对这个 XPath 表达式求值的结果:

   "substring-before(substring-after(., '>'),
'&lt;![endif]'
)

分别是::

  &lt;link rel="stylesheet" href="/layout/css/IE7.css" /&gt;

&lt;link rel="stylesheet" href="/layout/css/IE9.css" /&gt;

基于 XSLT 的验证:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="comment()">
<xsl:value-of select=
"substring-before(substring-after(., '>'),
'&lt;![endif]'
)"/>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<head>
<!--[if IE 7]>
<link rel="stylesheet" href="/layout/css/IE7.css" />
<![endif]-->
<!--[if IE 9]>
<link rel="stylesheet" href="/layout/css/IE9.css" />
<![endif]-->
</head>

在每个注释节点上计算 XPath 表达式并输出计算结果:

  &lt;link rel="stylesheet" href="/layout/css/IE7.css" /&gt;

&lt;link rel="stylesheet" href="/layout/css/IE9.css" /&gt;

关于c# - 需要帮助...使用 XPath 从条件注释中选择 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com