【问题标题】:Html Agility Pack is truncating a meta tag's valueHtml Agility Pack 正在截断元标记的值
【发布时间】:2011-06-30 21:18:27
【问题描述】:

我正在使用 Html Agility Pack 解析一些 html,但遇到了格式错误的元标记的问题。

鉴于此元标记:

"<meta name=\"productattributes\" value=\"shop: Baby|category: Category|category: Babies\" r\"us=\"\" exclusives|family:=\"\" strollers|name:=\"\" baby=\"\" trend=\"\" expedition=\"\" elx=\"\" travel=\"\" system=\"\" stroller=\"\" -=\"\" everglade|price:=\"\" 239.99\"=\"\">" 

当我打电话时:

HtmlNode productAttributes = hap.DocumentNode.SelectSingleNode("//meta[@name='productattributes']");

var productAttributesStr = productAttributes.GetAttributeValue("value", "");

生成的 productAttributesStr 以在“r”处截断的值结束:

“商店:婴儿|类别:类别|类别:婴儿”

我做错了什么?

【问题讨论】:

    标签: c# html-parsing html-agility-pack


    【解决方案1】:

    您正在使用" 作为属性值内的数据,该属性值以相同的字符分隔。您点击的第一个结束属性值。您需要使用实体来表示它们:&amp;quot;

    【讨论】:

    • 这不是我的 html,所以我需要想出一个解决方法来解析它。 html 来自 Toysrus.com。
    • 您必须编写一个自定义修复例程来纠正错误,然后再尝试解析它。 (或者让供应商从源头上修复它)。
    【解决方案2】:

    该 html 实际上是无效的。您复制的字符串(未添加 C# \" )是:

    <meta name="productattributes" value="shop: Baby|category: Category|category: Babies" r"us="" exclusives|f...
    

    所以属性'value'在Baby处结束,在r之后有一个“(双引号),等等......

    【讨论】:

    • 这不是我的 html,所以我需要想出一个解决方法来解析它。 html 来自 Toysrus.com。
    猜你喜欢
    • 2011-01-22
    • 2012-03-07
    • 2018-12-03
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多