當前位置:首頁 » 編程語言 » 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腳本顯示出來

熱點內容
ideajar源碼 發布:2024-05-17 22:40:30 瀏覽:785
易語言取名源碼 發布:2024-05-17 22:40:12 瀏覽:645
存儲巴士x250 發布:2024-05-17 22:21:30 瀏覽:569
別墅中央空調地暖如何配置最好 發布:2024-05-17 22:20:09 瀏覽:930
php安裝mbstring 發布:2024-05-17 22:09:56 瀏覽:471
單向板中配置哪些鋼筋 發布:2024-05-17 22:09:16 瀏覽:798
winftp下載 發布:2024-05-17 21:51:33 瀏覽:694
壓縮板包裝 發布:2024-05-17 21:44:59 瀏覽:265
安卓大屏怎麼安裝手機卡 發布:2024-05-17 21:39:09 瀏覽:754
xml導入sql 發布:2024-05-17 21:34:13 瀏覽:527