Re: Re[2]: [PHP] Object assignment
| From: | Matt Grimm | Date: | Thu, 10 Jul 2003 16:39:25 +0000 |
| Subject: | Re: Re[2]: [PHP] Object assignment | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-154751@lists.php.net to get a copy of this message | ||
Interesting -- the clone_node() function does make certain that each element
gets its own representation in the output, for any XML I tested. I guess
then my problem lies with how I'm looping through the aforementioned array
structure to get the values themselves.
Thanks,
--
Matt Grimm
Web Developer
The Health TV Channel, Inc.
(a non - profit organization)
3820 Lake Otis Parkway
Anchorage, AK 99508
907.770.6200 ext. 686
907.336.6205 (fax)
E-mail: mgrimm@healthtvchannel.org
Web: www.healthtvchannel.org
"Tom Rogers" <trogers@kwikin.com> wrote in message
news:9798167.20030710123304@kwikin.com...
> Hi,
>
> Thursday, July 10, 2003, 6:44:55 AM, you wrote:
> MG> Tom:
>
> MG> Thanks for the help. Using the array setup you described, I end up
with the
> MG> value of each "record" node being appended to a single instance of the
> MG> parent node. And that single instance of the parent node is the final
one
> MG> that was parsed (the attributes verify this). The example I used
below is
> MG> outputting this:
>
> MG> <rootElement>
> MG> <record id="2">Value 1Value 2</record>
> MG> </rootElement>
>
> MG> Any ideas?
>
> It seems we now have to clone nodes before using them. (php-4.3 +)
> I did this as a test:
>
> $test =array(
> 1=>array('type'=>'record','value'=>'Value
> 1','id'=>1),
> 2=>array('type'=>'record','value'=>'Value
> 2','id'=>2));
> $elements = array();
> $doc = domxml_new_doc("1.0");
> //create a dummy document
> ob_start();
> echo <<<END
> <rootelement>
> </rootelement>
> END;
> $buffer = ob_get_contents();
> ob_end_clean();
> $doc = domxml_open_mem($buffer);
> //get the root element
> $ancestor = $doc->document_element();
> //loop
> foreach($test as $val){
> $key = $val['type'];
> $value = $val['value'];
> $id = $val['id'];
> if(!isset($elements[$key])){
> $elements[$key] = $doc->create_element($key);
> }
> $thisChild =
$ancestor->append_child($elements[$key]->clone_node());//<<<<clone
> $thisChild->set_attribute('id',$id);
> $txt = $doc->create_text_node($value);
> $thisChild->append_child($txt);
> }
> //end loop
> echo '<pre>';
> echo htmlentities($doc->dump_mem(true));
> echo '</pre>';
>
> Gave me
> <?xml version="1.0"?>
> <rootelement>
> <record id="1">Value 1</record><record id="2">Value
2</record></rootelement>
>
> --
> regards,
> Tom
>