我正在尝试解析一个非常不清晰且格式不正确的HTML页面来获取一些信息。
以下是此页面的一个示例:
<form name="Form_Envio" method="post" action="/protesto/ieptb/SP/busca/SinProtIF15.php">
<font size="2" face="Verdana, Arial"><input type="button" value="NOVA PESQUISA" id="nvp" onMouseOver="hand(this);" onmouseout="pointer(this);" onClick="limpa_jucka()"></font>
== Content
<font size="1" face="Verdana, Arial" color="#FF0000"><p align="center">IMPORTANTE: ESTA INFORMAÇÃO REFERE-SE APENAS A PESQUISA,<br>NÃO TENDO VALIDADE DE CERTIDÃO</font>
<font size="1" face="Verdana, Arial" color="#003399"><p align="left">Pesquisa efetuada em: </font>
<font size="2" face="Verdana, Arial" color="#003399"><b>04/01/2012</b></font>
<font size="1" face="Verdana, Arial" color="#003399"> às </font>
<font size="2" face="Verdana, Arial" color="#003399"><b>14:15:03</b></font>
<font size="1" face="Verdana, Arial" color="#003399"> N. </font>
<font size="2" face="Verdana, Arial" color="#003399"><b>22620645</b> <br></font>
<font size="1" face="Verdana, Arial" color="#003399">RETROATIVO A CINCO ANOS ATÉ </font>
<font size="2" face="Verdana, Arial" color="#003399"><b>26/12/2011</b><br></font>
<font size="1" face="Verdana, Arial" color="#003399"><b>Pesquise tambem pelo R.G.</b> <br>Para o </font>
<font size="2" face="Verdana, Arial" color="#003399"><b>C.P.F. N. 000.923.266-41</b></font>
<font size="2" face="Verdana, Arial" color="#003399"><br>NAS CIDADES PARTICIPANTES </font></font>
<font size="2" face="Verdana, Arial" color="#003399"><br></font>
<font style="font:bold small-caps 9pt/11pt sans-serif,arial;color:#003399;">CONSTA(M) PROTESTO(S) POR FALTA DE PAGAMENTO, NO(S) SEGUINTE(S) TABELIONATO(S)<br><br></b></font></font>
== Next line is the start of useful information
<font style="font:bold 10pt/12pt sans-serif,arial;color:#003399;"><b>TABELIÃO DE NOTAS E DE PROTESTO DE LETRAS E TÍTULOS</b></font>
<font style="font:8pt/9pt sans-serif,arial;color:#003399;"><br> AV. VEREADOR JOÃO FERNANDES DA SILVA, 180 - Telefone: 11 4640-4542 fax 4642-3285<br> VILA VIRGINIA - ITAQUAQUECETUBA - SP<br><br></font>
== End of useful information
<font size="2" face="Times,Verdana,Arial" color="#003399"><table border="0" bgcolor="#00AADD" width="100%"><tr align="left" id="tpc" onmouseover="change_hand(this);" onmouseup="put_s25();">
<font style="font:bold 8pt/9pt sans-serif,arial;color:#000000;">Caso deseje mais informações sobre credor, valor e etc. </font><br>
<font style="font:bold 11pt/13pt sans-serif,arial;color:#0000FF;">CLIQUE AQUI, </font>
<font style="font:bold 8pt/9pt sans-serif,arial;color:#000000;">para requerer sua Certidão de Protesto.</tr></table></font>
== End of Content
拥有上面的HTML我已经设法获取查询中使用的查询和文档编号的日期,小时,ID(此信息可以在<font>
属性{{1}的行中找到}})。
这是我用来获取所需信息的XPath:
size="2"
我的下一步是检索HtmlNodeCollection tmpNodes = documentModel.DocumentNode.SelectNodes ("//font[@size='2']/b");
标记之间的信息。在这种情况下,它将是两个字符串:
==Useful Information
TABELIÃO DE NOTAS E DE PROTESTO DE LETRAS E TÍTULOS
(之后我可以解析)
**问题:**
我如何获得这些信息?我可以使用@Style属性使用XPath吗?我试过了,但没用。
答案 0 :(得分:2)
您只需要一些方法来唯一标识这些元素。例如:
//font[not(@size) and contains(@style, '#003399')
and not(contains(@style, 'small-caps'))]
这会选择font
元素,但不包含size
属性且style
属性包含文本#003399
,但不包含文本small-caps
(在努力排除符合其他标准的早期font
元素。
请注意,这会直接返回font
元素,而不是其子元素。
答案 1 :(得分:1)
尝试这样的事情..基本上删除尺寸
中的“@”XmlDocument xml = new XmlDocument();
xml.LoadXml(str);
XmlNodeList xnList = xml.SelectNodes"//font[size='2']/b");
foreach (XmlNode xn in xnList)
{
Console.WriteLine(xn.InnerText);
}
答案 2 :(得分:0)
我通过使用这些XPath找到了我想要的东西:
//font[@style='font:bold 10pt/12pt sans-serif,arial;color:#003399;']/b
和
//font[@style="font:8pt/9pt sans-serif,arial;color:#003399;']
谢谢!