Home > Article > Backend Development > Example of parsing and processing HTML/XML using SAX in PHP
Example of using SAX to parse and process HTML/XML in PHP
Overview:
SAX (Simple API for XML) is a streaming, Event-driven XML parsing method. It processes XML documents in a low-overhead way and is suitable for large XML files. In PHP, we can use SAX parser to parse and process HTML/XML documents. This article will introduce examples of how to use SAX to parse and process HTML/XML documents in PHP.
Example:
Consider the following HTML document as our example:
<html> <body> <h1>Welcome to SAX Parsing</h1> <p>This is a paragraph.</p> <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> </body> </html>
Our goal is to use a SAX parser to extract and print out the contents of the HTML document. To achieve this, we will create a class that inherits from PHP's SAX handler interface DefaultHandler and override some of its methods to handle events. The following is the sample code:
// 导入PHP的SAX处理类 require_once "XML/SaxParser.php"; // 创建一个继承自DefaultHandler的类 class MySaxHandler extends XML_SaxParser_DefaultHandler { private $currentTag = ""; // 处理元素开始事件 public function startElement($name, $attrs) { $this->currentTag = $name; } // 处理元素结束事件 public function endElement($name) { // 清空当前标签 $this->currentTag = ""; } // 处理元素内容事件 public function characters($data) { // 如果当前标签不为空,则打印出内容 if (!empty($this->currentTag)) { echo "Tag: " . $this->currentTag . " - " . $data . PHP_EOL; } } } // 创建一个SAX解析器实例 $saxParser = new XML_SaxParser(); // 创建一个自定义的SAX处理器实例 $mySaxHandler = new MySaxHandler(); // 将SAX处理器实例设置给SAX解析器 $saxParser->setHandler($mySaxHandler); // 解析HTML文档 $saxParser->parseFile("example.html");
Output:
Tag: h1 - Welcome to SAX Parsing Tag: p - This is a paragraph. Tag: li - Item 1 Tag: li - Item 2 Tag: li - Item 3
Through the above example, we created a custom SAX handler class MySaxHandler to handle element start, element end, and element content events. In the startElement method, we record the name of the current label; in the endElement method, we clear the value of the current label; in the characters method, we print out the non-empty label and its content.
Then, we created a SAX parser instance $saxParser and a custom SAX processor instance $mySaxHandler, and set the latter to the former. Finally, we use the parseFile method of $saxParser to parse the HTML document.
Conclusion:
SAX is an efficient way to parse and process XML/HTML documents. In PHP, we can use SAX parser to parse, process and extract the content of XML/HTML documents. By creating a class that inherits from DefaultHandler and overriding its methods, we can customize the handler to handle different types of events. This article gives a basic example, hoping to help readers quickly get started and understand how to use SAX to parse and process HTML/XML documents in PHP.
The above is the detailed content of Example of parsing and processing HTML/XML using SAX in PHP. For more information, please follow other related articles on the PHP Chinese website!