2016-09-19 4 views
-1
<?xml version="1.0" encoding="UTF-8"?> 
<assessmentTest xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" identifier="Tes-1" title="Tes 1" toolName="tao" toolVersion="2.6.7" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 http://www.imsglobal.org/xsd/qti/qtiv2p1/imsqti_v2p1.xsd"> 
    <timeLimits maxTime="180" allowLateSubmission="false"/> 
    <testPart identifier="TesBagian-1" navigationMode="linear" submissionMode="individual"> 
    <itemSessionControl maxAttempts="0" showFeedback="false" allowReview="true" showSolution="false" allowComment="false" allowSkipping="true" validateResponses="false"/> 
    <timeLimits maxTime="180" allowLateSubmission="false"/> 
    <assessmentSection identifier="subBagian-1" required="true" fixed="false" title="Sub Bagian 1" visible="true" keepTogether="true"> 
     <assessmentItemRef identifier="item-1" required="false" fixed="false" href="http://localhost/tao_dev/icat.rdf#i147252537452611434"/> 
    </assessmentSection> 
    <assessmentSection identifier="assessmentSection-1" required="false" fixed="false" title="Sub Bagian 2" visible="false" keepTogether="true"/> 
    </testPart> 
    <testPart identifier="TesBagian-2" navigationMode="linear" submissionMode="individual"> 
    <assessmentSection identifier="subBagian-2" required="false" fixed="false" title="Sub Bagian 1" visible="false" keepTogether="true"/> 
    <assessmentSection identifier="assessmentSection-2" required="false" fixed="false" title="Sub Bagian 2" visible="false" keepTogether="true"/> 
    </testPart> 
</assessmentTest> 

так что я пытаюсь получить значение из атрибута «идентификатор» из дочернего объекта TestPart и атрибута «идентификатор» из подкатегории оценки. Я уже загружаю xml-файл, но я не знаю, что делать после этого.Как получить атрибут из этого элемента xml?

+0

SimpleXML кольца колокол? –

+0

Пожалуйста, покажите нам свой источник. – ThW

ответ

1

Вы не указали, как вы загрузили xml или не указали какой-либо код, но следующее должно дать вам представление о том, как вы можете продолжить.

$xml=' 
    <?xml version="1.0" encoding="UTF-8"?> 
    <assessmentTest xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" identifier="Tes-1" title="Tes 1" toolName="tao" toolVersion="2.6.7" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 http://www.imsglobal.org/xsd/qti/qtiv2p1/imsqti_v2p1.xsd"> 
     <timeLimits maxTime="180" allowLateSubmission="false"/> 
     <testPart identifier="TesBagian-1" navigationMode="linear" submissionMode="individual"> 
     <itemSessionControl maxAttempts="0" showFeedback="false" allowReview="true" showSolution="false" allowComment="false" allowSkipping="true" validateResponses="false"/> 
     <timeLimits maxTime="180" allowLateSubmission="false"/> 
     <assessmentSection identifier="subBagian-1" required="true" fixed="false" title="Sub Bagian 1" visible="true" keepTogether="true"> 
      <assessmentItemRef identifier="item-1" required="false" fixed="false" href="http://localhost/tao_dev/icat.rdf#i147252537452611434"/> 
     </assessmentSection> 
     <assessmentSection identifier="assessmentSection-1" required="false" fixed="false" title="Sub Bagian 2" visible="false" keepTogether="true"/> 
     </testPart> 
     <testPart identifier="TesBagian-2" navigationMode="linear" submissionMode="individual"> 
     <assessmentSection identifier="subBagian-2" required="false" fixed="false" title="Sub Bagian 1" visible="false" keepTogether="true"/> 
     <assessmentSection identifier="assessmentSection-2" required="false" fixed="false" title="Sub Bagian 2" visible="false" keepTogether="true"/> 
     </testPart> 
    </assessmentTest>'; 



libxml_use_internal_errors(true); 
$dom=new DOMDocument; 
$dom->validateOnParse=false; 
$dom->standalone=true; 
$dom->strictErrorChecking=false; 
$dom->recover=true; 
$dom->formatOutput=false; 
$dom->loadXML($xml); 
libxml_clear_errors();         

$colParts=$dom->getElementsByTagName('testPart'); 
$colSects=$dom->getElementsByTagName('assessmentSection'); 


$data=array(); 
foreach($colParts as $node){ 
    if($node->nodeType==XML_ELEMENT_NODE && $node->hasAttribute('identifier')) $data['testPart'][]=$node->getAttribute('identifier'); 
} 
foreach($colSects as $node){ 
    if($node->nodeType==XML_ELEMENT_NODE && $node->hasAttribute('identifier')) $data['assessmentSection'][]=$node->getAttribute('identifier'); 
} 

print_r($data); 

Не уверен, если это более или менее то, что вы имеете в виде с Последующим вопросом, но должны дать вам хорошее место для начала и при необходимости уточнить.

$colParts=$dom->getElementsByTagName('testPart'); 
foreach($colParts as $node){ 
    if($node->nodeType==XML_ELEMENT_NODE && $node->hasAttribute('identifier')) { 
     $attrib=$node->getAttribute('identifier'); 
     $data['testPart'][ $attrib ]=array(); 
    } 
    if($node->hasChildNodes()){ 
     foreach($node->childNodes as $child){ 
      if($child->tagName=='assessmentSection'){ 
       $data['testPart'][ $attrib ][]=$child->getAttribute('identifier'); 
      } 
     } 
    } 
} 

print_r($data); 

Выведет так:

/* 
    Array 
    (
     [testPart] => Array 
      (
       [TesBagian-1] => Array 
        (
         [0] => subBagian-1 
         [1] => assessmentSection-1 
        ) 

       [TesBagian-2] => Array 
        (
         [0] => subBagian-2 
         [1] => assessmentSection-2 
        ) 

      ) 

    ) 

*/ 
+0

все получилось, спасибо! любая идея о том, как сделать значение valuSection частью атрибута testPart в массиве, например {["TesBagian-1": {["valuvalue-1"], ["valuvalue-2]}], [" TesBagian-2 " : {["valuvalue-1"]}]}? –