什么是XML解析器HTML?
解析器对象是用来表示解析器的。XML和(部分)HTML都支持解析。值得注意的是,XHTML最好作为XML来解析;使用HTML解析器会导致不可预知的结果。 HTML/XML解析器节点是解析一个HTML或XML文档字符串,并可选择对其执行选择器。一个本地文件、一个HTTP URL或一个FTP URL都可以被lxml解析。它还能自动检测并读取用gzip(.gz)压缩过的XML文件。
XML Parser HTML的例子
从XML和HTML文档中读取和处理内容是从网络上获取数据的一个常见部分。这被称为解析。基于文本的标记语言,如HTML和XML,被广泛用于存储数据。它们很容易理解,也很容易转移到其他系统。
加载HTML的过程
$dom = XML::LibXML->load_html(...); $dom = $parser->load_html(...);
HTML解析可能很棘手,特别是在利用了安培尔('&')的情况下。当包含CGI脚本链接的HTML代码被解析时,这是一个常见的问题。解析器会因为这样的链接而产生错误。在某些情况下,libxml2 继续解析文档,就像没有错误一样,但错误迫使 XML::LibXML 停止解析。然而,这篇论文并没有错。应该使用 recover 标志来解析这样的 HTML 文本。恢复功能在默认情况下是禁用的。
通过XML解析HTML
$doc = $parser->parse_html_file( $htmlfile, \%opts );
JSoup的优点是相当有弹性。不管你提供的HTML是否有良好的格式,Jsoup的HTML解析器都会尽一切努力建立一个干净的解析。
例子 #1
<!DOCTYPE html> <html> <body> <p id="example"></p> <script> var pars, xDoc; var text = "<store><liquid>" + "<title>hello </title>" + "<brand>vaetlm de lousis</brand>" + "<year>2020</year>" + "</liquid></store>"; pars = new DOMParser(); xDoc = pars.parseFromString(text,"text/xml"); document.getElementById("example").innerHTML = xDoc.getElementsByTagName("brand")[0].childNodes[0].nodeValue; </script> </body> </html>
解释
上面的例子将一个文本字符串解析为一个XML DOM对象,并使用JavaScript从其中获取信息。
输出。
例子#2
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoTest { public static void main(String[] args) { String html = "<html><head><title>Demo Content</title></head>" + "<body><p>Hello Everybody</p></body></html>"; Document doc= Jsoup.parse(html); System.out.println(doc.title()); Elements parag = doc.getElementsByTag("p"); for (Element parag : parag) { System.out.println(parag.text()); } } }
输出。
例子#3
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoupTester { public static void main(String[] args) { String html = "<html><head><title>This is EDUCBA</title></head>" + "<body>" + "<p>Online Courses</p>" + "<div id='demodiv'><a href='www.educba.com'>Corporate Bridge</a></div>" +"</body></html>"; Document doc = Jsoup.parse(html); System.out.println(doc.title()); Elements para = doc.getElementsByTag("p"); for (Element para : paragraphs) { System.out.println(para.text()); } Element demodiv = doc.getElementById("demodiv"); System.out.println("Data: " + demodiv.text()); Elements lk = demodiv.getElementsByTag("a"); for (Element lk : links) { System.out.println("reference: " + link.attr("href")); System.out.println("Text: " + li.text()); } } }
解释
上面的文件使用jsoup来提取HTML文档中的一个文本,输出结果显示为。
输出。
例子 #4
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Hello EDUCBA</title> </head> <body> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript"> $(function () { $("#upload").bind("click", function () { var reg = /^([a-zA-Z0-9\s_\\.\-:])+(.xml)$/; if (reg.test($("#fileUpload").val().toLowerCase())) { if (typeof (FileReader) != "undefined") { var re = new FileReader(); re.onload = function (e) { var xmlD = $.parseXML(e.target.result); var passengers = $(xmlD).find("Passenger"); var table = $("<table />"); table[0].border = "1.1"; var row = $(table[0].insertRow(-1)); passengers.eq(0).children().each(function () { var hcell = $("<th />"); hcell.html(this.nodeName); row.append(hcell); }); $(passengers).each(function () { row = $(table[0].insertRow(-1)); $(this).children().each(function () { var c = $("<td />"); c.html($(this).text()); row.append(c); }); }); var tb = $("# tb"); tb.html(""); tb.append(table); } reader.readAsText($("#fileUpload")[0].files[0]); } else { alert("Doesnt work in the Browser."); } } else { alert("Load a Valid file."); } }); }); </script> <input type="file" id="fileUpload" /> <input type="button" id="upload" value="Load" /> <hr /> <div id="tb"> </div> </body> </html>
解释
使用JavaScript、jQuery和HTML5,在客户端读取、解析和显示FileUpload控件(HTML文件输入)中选择的XML文件。使用JavaScript,HTML5允许开发者查看XML文件的内容和信息。
输出。
使用了parse-options
html是一个函数。
htmlTreeParse(), which is equal to htmlParse(file, useInternalNodes = FALSE),
上述语句用于将内容解析为R结构。
将一个HTML文件转换为一个R结构
doc1 = htmlTreeParse("http://www.r-project.org/mail.html")
当涉及到解析HTML文本的时候。
1.xmlParse()可以完成这项工作,但只适用于格式良好的HTML
2.最好是安全起见,使用 isHTML = TRUE 选项,它与 htmlParse() 等同。
3.我们可以使用 htmlParse() 或 htmlTreeParse(),它们试图通过采用启发式方法填补空白来修复格式不佳的文档。
4.在最坏的情况下,我们可以使用 R 包 "RTidyHTML "中的 tidyHTML(),然后将结果发送给 htmlParse() 。
pars = etree.XMLParser(ns_clean=True) treede = etree.parse(StringIO(xml), parser) etree.tostring(treede.getroot()) b'<a xmlns="demo"><b/></a>'
以下的布尔关键字参数是可用的。
1.属性默认值 - 读取DTD(如果文档中指定了DTD)并填充默认属性。
2.
3.load dtd-处理时,加载并解析DTD(不进行验证)
4.no_ network-检查外部文档时,使用no network来阻止网络访问(默认打开)
5.ns clean-试图摆脱任何不需要的命名空间声明。
6.recovery-尽力解释受损的XML。
7.删除空白文本:标签之间的节点,通常被称为可忽略的空白,用删除空白文本。这在与DTD或模式(区分数据和噪音)结合时效果很好;否则,将利用启发式方法。
必要的解析器选项
$parser = XML::LibXML->new(); $parser = XML::LibXML->new(option=>value, ...); $parser = XML::LibXML->new({option=>value, ...}); $dom = XML::LibXML->load_xml( location => $file ); $dom = XML::LibXML->load_xml( string => $xml_string ); $dom = XML::LibXML->load_xml({ IO => $File_handle ); $dom = $parser->load_xml(...); $dom = XML::LibXML->load_html(...); $dom = $parser->load_html(...); $fragment = $parser->parse_balanced_chunk( $wbxmlstring, $encoding ); $parser->process_xincludes( $doc ); $parser->processXIncludes( $doc ); $doc = $parser->parse_file( $xmlfilename ); $doc = $parser->parse_fh( $io_fh ); $doc = $parser->parse_string( $xmlstring); $doc = $parser->parse_html_file( $htmlfile, \%opts ); $doc = $parser->parse_html_fh( $io_fh, \%opts ); $doc = $parser->parse_html_string( $htmlstring, \%opts ); $parser->parse_chunk($string, $terminate); $parser->init_push(); $parser->push(@data); $doc = $parser->finish_push( $recover ); $parser->option_exists($name); $parser->get_option($name); $parser->set_option($name,$value); $parser->set_options({$name=>$value,...}); $parser->load_catalog( $catalog_file );
总结
我们对如何解析HTML文档的讨论到此结束。Jsoup是一个神奇而强大的开源工具包,用于读取HTML文档、正文片段、HTML字符串,以及直接处理网络上的HTML材料。在这篇文章中,我们学习了如何在Java中检索某个HTML标签的值,因为我们提取了H1元素的标题和值作为文本,以及如何从HTML标签中获取一个属性的值。
推荐文章
这是一份关于XML解析器HTML的指南。在这里,我们讨论了定义,什么是XML解析器HTML,以便更好地理解。
The postXML Parser HTMLappeared first onEDUCBA.