当前位置:首页 » 编程语言 » phpdom解析

phpdom解析

发布时间: 2022-07-14 20:40:37

1. 如何利用SAX和DOM技术实现php对XML文件的解析

应该是这样的吧:
XML主要用于数据的处理与表达.因为html等其它标记语言无法准确表达其本质内容,而主要是表现样式.导致带来很多不便.这样,XML就诞生了.

XML的DOM其实就是映射在内存中的数据.XML是树型结构,操作很麻烦.DOM的出现就是解决这个问题的.利用DOM,可以轻松地在节点间进行读取,增加,删除等一系列操作.

下面举个例子吧,我上课时候的题目:

<html>
<head>
<title>ex 08 - code by MacroChin 10:08 2008-5-23</title>
<style>
tr,td{
border-bottom: #0000FF solid 1px;
font-size: 11px;
font-family: Arial;
}
</style>
<script language="VBScript" defer>
<!--
Function listProc(str)
s=""
tds = split(str, " ")
For i=0 To UBound(tds)
s = s & "<td>" & tds(i) &"</td>"
Next
listProc=s
End Function
//-->
</script>
<script language="javascript" defer>
<!--

function list(qrystr)
{
var sHTML='';
sHTML += '<table>\
<tr><td>学号</td><td>姓名</td><td>性别</td><td>年龄</td>\
<td>c语言</td><td>XML</td><td>JSP</td><td>数据结构</td><td>SQL</td></tr>\
';
var xml=new ActiveXObject("Microsoft.XMLDOM");
if(!xml.load("ex08.xml")) return;
var stus=xml.selectNodes(qrystr);
for(var i=0; i<stus.length; i++)
{
sHTML += '<tr>' + listProc(stus.item(i).getAttribute('s_ID') + ' ' + stus.item(i).text) + '</tr>';
}
sHTML += '</table>\
<BR>';
document.getElementById('sbox').innerHTML = sHTML;
}

//-->
</script>
</head>
<body>
<a href="#" onClick="list('//student');">1.输出所有学生信息</a><BR>
<a href="#" onClick="list('//student[@s_ID=\'SA01003\']')">2.输出学号(s_ID)为SA01003的学生信息</a><BR>
<a href="#" onClick="list('//student[sex=\'男\']')">3.输出性别为“男”的所有学生信息</a><BR>
<a href="#" onClick="list('//student[age<\'20\']')">4.输出年龄小于20的学生信息</a><BR>
<a href="#" onClick="list('//student[grade[XML>=\'90\' and C语言>=\'90\']]')">5.输出xml和c语言课程都在90分以上(包括90)的学生信息</a><BR>
<BR><BR>
<div id="sbox"></div>
</body>
</html>

把这个代码保存为ex08.htm文件.

然后再写一个ex08.xml文件,内容如下:
<?xml version="1.0" encoding="GB2312"?>
<students>
<student s_ID="SA01001">
<name>赵毅</name>
<sex>男</sex>
<age>23</age>
<grade>
<C语言>91</C语言>
<XML>90</XML>
<JSP>76</JSP>
<a数据结构>93</a数据结构>
<SQL>83</SQL>
</grade>
</student>
<student s_ID="SA01002">
<name>李晓红</name>
<sex>女</sex>
<age>22</age>
<grade>
<C语言>71</C语言>
<XML>81</XML>
<JSP>76</JSP>
<a数据结构>65</a数据结构>
<SQL>89</SQL>
</grade>
</student>
<student s_ID="SA01003">
<name>欧阳涛</name>
<sex>男</sex>
<age>20</age>
<grade>
<C语言>90</C语言>
<XML>93</XML>
<JSP>78</JSP>
<a数据结构>68</a数据结构>
<SQL>86</SQL>
</grade>
</student>
<student s_ID="SA01004">
<name>李明</name>
<sex>男</sex>
<age>19</age>
<grade>
<C语言>72</C语言>
<XML>77</XML>
<JSP>95</JSP>
<a数据结构>87</a数据结构>
<SQL>78</SQL>
</grade>
</student>
</students>

运行ex08.htm,然后进行一些操作,看看是不是很酷?

2. php DOMDocument 如何获取html的数据,包括html的标签在内,麻烦高手解答

没人看的懂你的问题,首先要恭喜你你又懂了一些一般人不懂的问题,不多说了,
我看了DOMDocument 用来获取xml的。如果要用PHP来解析html,可以用simple_html_dom,会jquery的话,看这个比较容易,具体用法,可以网络一下 php simple_html_dom。
希望对你有用。你的意思,我理解对了吧?

3. php DOMXPath怎么获取和设置子节点值

$xmlDoc = new DOMDocument;
$xmlDoc -> load($xml_resource);
$xpath = new DOMXPath($xmlDoc);
//$advert_path = '/root/advert[@id="1"]';
$statue_path = '/root/advert/status';
//$advert = $xpath -> query($advert_path) ->item(0);
$replaceNodeOld = $xpath -> query($statue_path) ->item(0);
$replaceNodeNew = = $xmlDoc -> createElement('person', 'fff');//改变成它
$replaceNodeOld = $replaceNodeOld -> item(0)->parentNode->replaceChild($replaceNodeNew, $replaceNodeOld ->item(0));

4. php怎么操作html的dom,有没有类似js的innerhtml

php不能操作dom的,但php可以这样
<?php
echo "<script> var i =0;</script>"
?>
希望对你有帮助!

5. PHP的simple_html_dom的具体用法。详细一点,

这是一个 PHP5 的 HTML 文档解析器,示例代码:

// 创建一个html对象,这个抓的是谷歌的首页
$html = file_get_html('http://www.google.com/');

//找到对象中所有的img的src
foreach($html->find('img') as $element)
echo $element->src . '<br>';

//找到对象中所有的a的href
foreach($html->find('a') as $element)
echo $element->href . '<br>';

就是以前你采集的时候,先file_get_contents把目标url的页面源码抓过来,假如要页面里的a标签的href,你要用正则分析。现在有了这个simple_html_dom。直接可以帮你分析出你需要的a标签里的href。

6. php dom怎么能获取所有text里的内容 <part> <text>content1</text><text>content2</text> </part>

<?php
//要解析的字符串
$xmldata = "<part><text>content1</text><text>content2</text></part>";
//创建解析器
$xmlparser = xml_parser_create();
// xml解析
xml_parse_into_struct($xmlparser,$xmldata,$values);
//释放解析器
xml_parser_free($xmlparser);

foreach ($values as $row) {
// 判断解析的标签是否是text
if (strtolower($row['tag']) == 'text') {
$data[] = $row['value'];
}
}
//输出解析后的内容
print_r($data);
?>

7. php中怎么利用dom查找到某元素的节点(<div class='aaa')并修改其元素内容

其实和客户端查找某元素的节点是差不多的,只是这里面的代码写在PHP中。
在JS中,如果只是获取class='aaa'的DIV元素,那么只要遍历文档树中的DIV元素,如果要获取class='aaa'的元素,不单是DIV,那么就要遍历整个文档树。我这里就只遍历DIV元素,取出class为'aaa'的DIV元素。且看下面的代码:
-------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>获取class为aaa的DIV元素并使之颜色为红</title>
</head>
<body>
<div class="aaa">第一个DIV</div>
<div class="aaa">第二个DIV</div>
<div>第二个DIV,但没有class</div>
<span class="aaa">span标签</span>
<script type="text/javascript">
//获取根节点
var root = document;
//获取DOM中的div元素,数组形式
var need = root.getElementsByTagName('div');
//遍历这个组数
for(var i=0;i<need.length;i++){
//如果这个组数元素(即该DIV)的className为'aaa',给它一个样式为前景红色
if(need[i].className=='aaa'){
need[i].style.color = 'red';
}
}
</script>
</body>
</html>
------------------------------------

执行后,只有class为'aaa'的DIV元素中的文本变成了红色
接下来就把这段JS脚本写到PHP里
--------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>获取class为aaa的DIV元素并使之颜色为红</title>
</head>
<body>
<div class="aaa">第一个DIV</div>
<div class="aaa">第二个DIV</div>
<div>第二个DIV,但没有class</div>
<span class="aaa">span标签</span>
<?php
echo "<script type=\"text/javascript\">
var root = document;
var need = root.getElementsByTagName('div');
for(var i=0;i<need.length;i++){
if(need[i].className=='aaa'){
need[i].style.color = 'red';
}
}
</script>";
?>
</body>
</html>
----------------------------------
就是一个echo这么简单,把JS脚本显示出来

热点内容
畅捷支付刷脸机如何设置密码 发布:2024-05-19 13:03:10 浏览:764
java麻将 发布:2024-05-19 13:03:00 浏览:433
存储过程大数据游标 发布:2024-05-19 13:00:50 浏览:515
内存存储价格 发布:2024-05-19 13:00:48 浏览:389
隔离期的算法 发布:2024-05-19 12:55:13 浏览:530
苹果怎么装安卓模拟器 发布:2024-05-19 12:42:15 浏览:801
脚本养微信 发布:2024-05-19 12:42:14 浏览:148
人脸识别算法公司 发布:2024-05-19 12:37:10 浏览:682
苹果平板怎么跟安卓电脑投屏 发布:2024-05-19 12:36:20 浏览:20
广州税控盘密码和口令是多少 发布:2024-05-19 12:25:36 浏览:595