Jump to content

Recommended Posts

Hey everyone, I am having trouble with a simple task and its driving me nuts. I need to load the contents of an XML file into an array so I can loop through it and insert them into my database. I need to have the name attribute of <word>(ie: "work title") and the contents of <word> (ie: "this is the data") in separate variables/arrays. Can anybody help me with this? I cant seem to set up my script right to pull them into variables. I am starting over and thought I would come here first, before spending another day of scripting.

 

XML Example:

<glossary>

<word name="work title">

<![CDATA[This is the data.]]>

</word>

<word name="work title">

<![CDATA[This is the data.]]>

</word>

<word name="work title">

<![CDATA[This is the data.]]>

</word>

</glossary>

 

Thanks in advance.

dom

 

Take a look at the PHP DOM, I think that is what you would want.

 

An example from the DOMDocument comments

 

<?php
    function xml2array($xml) {
        $domDocument = new DOMDocument;
        $domDocument->loadXML($xml);
        $domXPath = new DOMXPath($domDocument);
        $array = array();
        foreach ($domXPath->query('//key') as $keyDOM) {
            $id = $keyDOM->getAttribute('id');
            $value = $keyDOM->hasAttribute('value') ? $keyDOM->getAttribute('value') : trim($keyDOM->textContent);
            if (array_key_exists($id, $array)) {
                if (is_array($array[$id])) {
                    $array[$id][] = $value;
                } else {
                    $array[$id] = array($array[$id]);
                    $array[$id][] = $value;
                }
            } else {
                $array[$id] = $value;
            }
        }
        return $array;
    }
?>

Hello Everyone,

I got my script working on my earlier issue and now I am having another roadblock with my new task. I need to load the data into variables that I can work with. I have one area that is giving me a problem and I wanted to see if anybody can help. Here is my new xml data breakdown that I am working with.

 

<topics>

<item id="1" answer_id="B">

<question><![CDATA[This is where the Main data is located]]></question>

<replies>

<reply id="A"><![CDATA[Answer Option A]]> </reply>

<reply id="B"><![CDATA[Answer Option B]]>

<description><![CDATA[Explination of question]]></description>

</reply>

<reply id="C"><![CDATA[Answer Option C]]></reply>

<reply id="D"><![CDATA[Answer Option D]]></reply>

</replies>

</item>

</topics>

 

 

I can get all of the data loaded into variable except for all four of the <reply>'s. I can find the first one, but not the following three others. Can anybody let me know what I am doing wrong. How should I be calling the data for these <reply> items?

 

Here is the php code I am working with.

 

PHP Code:

<?php

 

error_reporting(E_ALL);

 

include 'xmlFile.php';

 

$xml = new SimpleXMLElement($xmlstr);

$text = $xmlstr;

$xml = simplexml_load_string($text, 'SimpleXMLElement', LIBXML_NOCDATA);

foreach($xml->item as $item)  {

    foreach ($item->question as $question) {

    foreach ($item->replies as $replyGroup) {

            foreach ($replyGroup->reply as $replyMain) { // This gives me the first reply but not the rest

                foreach ($replyMain->description as $desc) {

                }

            }

    }

    }

   

    echo "Situation : ".$question."<br>Correct Reponse: ".$replyMain['id']."<br>Why: ".$desc."<br>Reply One: ".$replyMain."<br>Reply Two: <br>Reply Three: <br>Reply Four: <br><br>";

 

}

 

 

?>

Thanks in advance

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.