0

こんにちは皆さん、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 から取得するのに苦労しているものです。

私はすでにネット時間でこれを検索していましたが、これを解決するのに役立つ特定の例を見つけることができません。そして、ここで質問するのが私の最後の選択肢です。私に提供されたすべての助けに感謝します。

4

1 に答える 1

1

以下は、XML を取得して次を出力する例です。

  • <activity>属性からの詳細(例: id="1")
  • それぞれのレッスンの詳細<lesson>(あなたの例には1つしかありません)

XML 要素名を PHP 変数によりよく一致させるために名前を に変更$dataしたことに注意してください。.$activity$lesson

$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 の使用方法の詳細については、基本的な SimpleXML の使用法PHP マニュアル ページを参照してください。

于 2012-07-27T12:42:27.293 に答える