我想用C#解析HTML数据。如何确定哪个HTML是“代码”,哪个是“显示/内容”?
如果您认为HTML数据的每个字符都是有点:true =“html/code”。 false =“显示/内容”。然后你就会知道HTML的哪一部分是“代码”。
让我们用下面的HTML例子:
<a id="a1" class="c1" attr1="x" attr2="y">a1 c1 attr1</a> <p>a1 c1 attr1 attr2</p>
我想要做一个C#与string.replace找到“A1”的所有实例,并与“名new1”代替。 我想做一个C#String.Replace来查找“attr1”的所有实例并将其替换为“new2”。 但我只希望html代码受到影响,并且我希望所有“内容”都不要改变。期望的结果是:
<a id="new1" class="c1" new2="x" attr2="y">a1 c1 attr1</a> <p>a1 c1 attr1 attr2</p>
注意:所需的结果有2个未重命名的其他“a1”实例。 注意:所需的结果有2个未重命名的其他“attr1”实例。
我找不到任何有助于这项工作的现有库或软件。
EDIT1:HtmlAgilityPack可能是一个选项。但是,我仍然没有理解如何使用它来区分代码和非代码?
编辑2:请记住这个问题是尽可能简化我的真正问题。重命名有和没有引号的东西将不会是答案。 我特别需要弄清楚如何区分代码和非代码。
编辑3:我已经包括“attr1”作为辅助String.Replace。我需要找到要替换的属性和属性值。我需要能够区分代码和非代码。
有什么建议吗?
Obligatory [HtmlAgilityPack](http://stackoverflow.com/questions/846994/how-to-use-html-agility-pack)链接。可能要至少检查一下。 –
你可以做一个子字符串,但它会非常复杂。 – Ophitect
是的,使用HtmlAgilityPack,它被设计用于解析HTML,它甚至擅长解析形成错误的html。 –