1

xml の結果データを php スクリプトに送信する iSpring Solutions のクイズ システムがあります。情報を抽出して mysql データベースを更新したいと考えています。

各クイズには異なる質問があるため、xml ファイルは常に同じ長さ/構造ではありませんが、特定のデータを取得する必要があります。

これはxmlファイルからの抜粋です

<questions>

    <matchingQuestion id="{3F033905-566A-4B67-B7E4-324E4367FD16}" status="correct" maxPoints="2" maxAttempts="1" awardedPoints="2" usedAttempts="1">
      <direction>Match the items on the left with the items on the right</direction>
    </matchingQuestion>

    <fillInTheBlankQuestionEx id="{6FCC5DAC-168F-4F44-87DF-9B1D162268D1}" status="partially" maxPoints="8" maxAttempts="1" awardedPoints="4" usedAttempts="1">
      <direction>Which indefinite article should be written in front of the following words - 'a' or 'an'?</direction>
    </fillInTheBlankQuestionEx>

  </questions>

(a) 各子ノードの名前/ID を取得する (b) ID、ステータス、maxPoints 値を取得する (c) 次に、「方向」値を取得する必要があります

ノード名「matchingQuestion」または「fillInTheBlankQuestionEx」は、クイズによって常に順序が変わります。

クイズごとに質問の種類が異なるため、これらの値を取得する方法がわかりません。

よろしくお願いします

ジョン

完全な xml ファイルは次のとおりです。

    <quizReport xsi:schemaLocation="http://www.ispringsolutions.com/ispring/quizbuilder/quizresults quizReport.xsd" version="1" xmlns="http://www.ispringsolutions.com/ispring/quizbuilder/quizresults" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <quizSettings quizType="graded" maxScore="10" maxNormalizedScore="100" timeLimit="180">
    <passingPercent>0.8</passingPercent>
  </quizSettings>
  <summary score="2" percent="0.2" time="6">
    <variables>
      <variable name="VARIABLE_2" title="DFE number (7 digit)" value="2112377"/>
      <variable name="USER_NAME" title="Your name" value="John"/>
      <variable name="VARIABLE_1" title="Your class" value="6M"/>
    </variables>
  </summary>
  <questions>
    <matchingQuestion id="{3F033905-566A-4B67-B7E4-324E4367FD16}" status="correct" maxPoints="2" maxAttempts="1" awardedPoints="2" usedAttempts="1">
      <direction>Match the items on the left with the items on the right</direction>
      <premises>
        <premise>an</premise>
        <premise>a</premise>
      </premises>
      <responses>
        <response>elephant</response>
        <response>house</response>
      </responses>
      <matches>
        <match premiseIndex="0" responseIndex="0"/>
        <match premiseIndex="1" responseIndex="1"/>
      </matches>
      <userAnswer>
        <match premiseIndex="0" responseIndex="0"/>
        <match premiseIndex="1" responseIndex="1"/>
      </userAnswer>
    </matchingQuestion>
    <fillInTheBlankQuestionEx id="{6FCC5DAC-168F-4F44-87DF-9B1D162268D1}" status="incorrect" maxPoints="8" maxAttempts="1" awardedPoints="0" usedAttempts="1">
      <direction>Which indefinite article should be written in front of the following words - 'a' or 'an'?</direction>
      <details>
        <blank userAnswer="" correct="false">
          <answer>a</answer>
          <answer>a</answer>
        </blank>
        <text><![CDATA[ television
]]></text>
        <blank userAnswer="" correct="false">
          <answer>a</answer>
        </blank>
        <text><![CDATA[ boy
]]></text>
        <blank userAnswer="" correct="false">
          <answer>an</answer>
        </blank>
        <text><![CDATA[ umbrella
]]></text>
        <blank userAnswer="" correct="false">
          <answer>a</answer>
        </blank>
        <text><![CDATA[ house
]]></text>
        <blank userAnswer="" correct="false">
          <answer>an</answer>
        </blank>
        <text><![CDATA[ hour
]]></text>
        <blank userAnswer="" correct="false">
          <answer>an</answer>
        </blank>
        <text><![CDATA[ igloo
]]></text>
        <blank userAnswer="" correct="false">
          <answer>a</answer>
        </blank>
        <text><![CDATA[ minute
]]></text>
        <blank userAnswer="" correct="false">
          <answer>an</answer>
        </blank>
        <text><![CDATA[ elephant]]></text>
      </details>
    </fillInTheBlankQuestionEx>
  </questions>
</quizReport>
4

2 に答える 2

0

コーディングを開始するために、例を示します。$text に xml が含まれているとします。

$xml = new SimpleXMLElement($text);
echo '<pre>';
foreach ($xml->questions->children() as $q) {
//      print_r($q); echo '<br/>';
        print_r((string)$q->getName());echo '<br/>';
        print_r((string)$q->attributes()->id);echo '<br/>';
        print_r((string)$q->direction);echo '<br/>';
}

結果:

matchingQuestion
{3F033905-566A-4B67-B7E4-324E4367FD16}
Match the items on the left with the items on the right
fillInTheBlankQuestionEx
{6FCC5DAC-168F-4F44-87DF-9B1D162268D1}
Which indefinite article should be written in front of the following words - 'a' or 'an'? 
于 2015-05-03T13:38:37.040 に答える
0

お返事ありがとうございます。Splash58 の以下のコードを使用して、mysql データベースを更新する php を書き直しました。

    foreach ($xml->questions->children() as $q) {
$QuestionType=(string)$q->getName();
$QuestionUUID=(string)$q->attributes()->id;
$QuestionAsked=(string)$q->direction;

$query="INSERT INTO questions (UUID, Qtype, Question) VALUES ('".$QuestionUUID."', '".$QuestionType."', '".$QuestionAsked."')";
$mysqli->query($query);

}

ただし、最初の質問のみが DB に追加されています。

于 2015-05-03T14:25:54.300 に答える