2012-07-27 36 views
0

Hello guys我正在尋求幫助,以從PHP獲取XML文件中的文本。 我是PHP和XML的初學者,無論如何都開始喜歡它。使用PHP從Xml文件中獲取文本

這是我的XML:

<?xml version="1.0" encoding="UTF-8"?> 
<activity id="1" moduleid="3" modulename="lesson" contextid="22"> 
    <lesson id="1"> 
    <course>2</course> 
    <name>asdasdasasdasda</name> 
    <practice>0</practice> 
    <modattempts>0</modattempts> 
    <usepassword>0</usepassword> 
    <password></password> 
    <dependency>0</dependency> 
    <conditions>O:8:"stdClass":3:{s:9:"timespent";i:0;s:9:"completed";i:0;s:15:"gradebetterthan";i:0;}</conditions> 
    <grade>100</grade> 
    <custom>1</custom> 
    <ongoing>0</ongoing> 
    <usemaxgrade>0</usemaxgrade> 
    <maxanswers>4</maxanswers> 
    <maxattempts>1</maxattempts> 
    <review>0</review> 
    <nextpagedefault>0</nextpagedefault> 
    <feedback>0</feedback> 
    <minquestions>0</minquestions> 
    <maxpages>0</maxpages> 
    <timed>0</timed> 
    <maxtime>20</maxtime> 
    <retake>0</retake> 
    <activitylink>0</activitylink> 
    <mediafile>/airline ticket system.txt</mediafile> 
    <mediaheight>480</mediaheight> 
    <mediawidth>640</mediawidth> 
    <mediaclose>0</mediaclose> 
    <slideshow>0</slideshow> 
    <width>640</width> 
    <height>480</height> 
    <bgcolor>#FFFFFF</bgcolor> 
    <displayleft>0</displayleft> 
    <displayleftif>0</displayleftif> 
    <progressbar>0</progressbar> 
    <showhighscores>0</showhighscores> 
    <maxhighscores>10</maxhighscores> 
    <available>0</available> 
    <deadline>0</deadline> 
    <timemodified>1342762739</timemodified> 
    <pages> 
    </pages> 
    <grades> 
    </grades> 
    <highscores> 
    </highscores> 
    <timers> 
    </timers> 
    </lesson> 
</activity> 

,這是目前我的PHP腳本:

<?php 
$data = simplexml_load_file('lesson.xml'); 

foreach ($data as $dxdata) { 
echo "Activity ID: ".$data->activity[0]['id']."<br />"; 
echo "Module ID: ".$data->activity['moduleid']."<br />"; 
echo "Module Name: ".$data->activity['modulename']."<br />"; 
echo "Context ID: ".$data->activity['contextid']."<br />"; 
echo "Lessons ID: ".$data->lesson[0]['id']."<br />"; 
echo "Course: ".$data->lesson[0]->course."<br />"; 
echo "Name: ".$data->lesson[0]->name."<br />"; 
echo "Practice: ".$data->lesson[0]->practice."<br />"; 
echo "Modattemps: ".$data->lesson[0]->modattempts."<br />"; 
echo "usepassword ".$data->lesson[0]->usepassword."<br />"; 
} 
?> 

這是我的PHP腳本的輸出:

Activity ID: 
Module ID: 
Module Name: 
Context ID: 
Lessons ID: 1 
Course: 2 
Name: asdasdasasdasda 
Practice: 0 
Modattemps: 0 
usepassword 0 

您看到我的腳本輸出無法獲取活動ID,模塊ID和模塊名稱。那些是我從xml難以獲得的。

我已經在網上搜索了這個小時已經找不到具體的例子來幫我解決這個問題。問這是我最後的選擇。請讓我感謝所有提供給我的幫助。

+1

您包含腳本的輸出,但不包含所需的輸出。你想要腳本輸出什麼? – 2012-07-27 12:33:39

+0

在我的腳本中我無法獲取活動ID,模塊ID和模塊名稱。我有問題從XML獲取此文本 electricfeel1979 2012-07-27 12:37:28

+0

foreach循環是不必要的... – meiamsome 2012-07-27 12:42:58

回答

1

下面是取你的XML並輸出以下內容的示例:從<activity>屬性

  • 細節(例如id="1"
  • 課細節對於每個<lesson>(只有一個在你的例子)

請注意,我已經改名$data$activity以更好地匹配XML元素名稱與PHP變量,並與相同。

$activity = simplexml_load_file('lesson.xml'); 

// Access attributes with array-style syntax 
echo "Activity ID: ".$activity['id']."<br />"; 
echo "Module ID: ".$activity['moduleid']."<br />"; 
echo "Module Name: ".$activity['modulename']."<br />"; 
echo "Context ID: ".$activity['contextid']."<br />"; 

// Loop over each <lesson> element directly under <activity> 
foreach ($activity->lesson as $lesson) { 
    echo "Lessons ID: ".$lesson['id']."<br />"; 
    echo "Course: ".$lesson->course."<br />"; 
    echo "Name: ".$lesson->name."<br />"; 
    echo "Practice: ".$lesson->practice."<br />"; 
    echo "Modattemps: ".$lesson->modattempts."<br />"; 
    echo "usepassword ".$lesson->usepassword."<br />"; 
} 

此輸出以下:

Activity ID: 1 
Module ID: 3 
Module Name: lesson 
Context ID: 22 
Lessons ID: 1 
Course: 2 
Name: asdasdasasdasda 
Practice: 0 
Modattemps: 0 
usepassword 0 

,詳細瞭解使用SimpleXML,看到Basic SimpleXML usage PHP手冊頁。

+0

非常感謝你salathe! !我的新偶像!這個讓我在互聯網垃圾研究的時間。 – electricfeel1979 2012-07-27 12:46:04

+0

@ mrpotatohead1251如果這個答案對你有幫助,你應該接受它! – 2012-09-12 14:47:02