PHP编写XML - 文件未保存

时间:2012-12-04 19:45:18

标签: php xml

我的一个类中有一个php函数,它只是创建了一个包含所有对象的XML文件。这是代码:

function writeXML(){
        //LOAD PROFILE
        //print "Profiles: <br>";
        //$pro = new Profile();

        $profileArray = $this->getAll();

        //var_dump($profileArray);
        //CHECK TO SEE IF THE XML FILE EXISTS IN THE LIBRARY/CONFIGURATION
        if(file_exists($_SESSION['ini'][rootPath] . "v/p.xml")){
            unlink($_SESSION['ini'][rootPath] . "v/p.xml");
        }

        //CREATE XML FILE
        //CREATE ROOT NODE
        $doc = new DOMDocument("1.0");
        $doc->formatOutput = true;

        //CREATE ROOT NODE
        print "Creating nodes";
        $root = $doc->createElement("profiles");
        $root = $doc->appendChild($root);

        //ADD NODES
        //print "<br>Creating children";
        foreach($profileArray as $member){
                    //AS WE CYCLE THROUGH THE ARRAY GET THE ARRAY OF OBJECT PARAMETERS
                    $memberArray = $member->toArray();

                    //var_dump($memberArray);

            //CREATE MEMBER NODE TO ROOT
            $person = $doc->createElement("profile");
            $person = $root->appendChild($person);

            //CREATE CHILD NODES FOR MEMBER
                        /*
                         * ID IS NOT NEEDED FOR IOS APP
            $id = $doc->createElement("ID");
            $id = $person->appendChild($id);

            $idValue = $doc->createTextNode($member->get_id());
            $idValue = $id->appendChild($idValue);
            */


            $lastName = $doc->createElement("lastName");
            $lastName = $person->appendChild($lastName);

            //$lastNameValue = $doc->createTextNode($member->get_lname());
                        $lastNameValue = $doc->createTextNode($memberArray['lastName']);
            $lastNameValue = $lastName->appendChild($lastNameValue);

            $firstName = $doc->createElement("firstName");
            $firstName = $person->appendChild($firstName);

            $firstNameValue = $doc->createTextNode($memberArray['firstName']);
                        //$firstNameValue = $doc->createTextNode($member->get_fname());
            $firstNameValue = $firstName->appendChild($firstNameValue);

                        $mobile = $doc->createElement("mobile");
            $mobile = $person->appendChild($mobile);

                        $mobileValue = $doc->createTextNode($memberArray['mobile']);
                        //$mobileValue = $doc->createTextNode($member->get_mobile());
            $mobileValue = $mobile->appendChild($mobileValue);

                        $phone = $doc->createElement("phone");
            $phone = $person->appendChild($phone);

            $phoneValue = $doc->createTextNode($memberArray['phone']);
                        //$phoneValue = $doc->createTextNode($member->get_phone());
            $phoneValue = $phone->appendChild($phoneValue);

            $email = $doc->createElement("email");
            $email = $person->appendChild($email);

            $emailValue = $doc->createTextNode($memberArray['email']);
                        //$emailValue = $doc->createTextNode($member->get_email());
            $emailValue = $email->appendChild($emailValue);

            $altEmail = $doc->createElement("altEmail");
            $altEmail = $person->appendChild($altEmail);

            $altEmailValue = $doc->createTextNode($memberArray['altEmail']);
                        //$altEmailValue = $doc->createTextNode($member->get_altemail());
            $altEmailValue = $altEmail->appendChild($altEmailValue);

            $street = $doc->createElement("address");
            $street = $person->appendChild($street);

            $streetValue = $doc->createTextNode($memberArray['street']);
                        //$streetValue = $doc->createTextNode($member->get_street());
            $streetValue = $street->appendChild($streetValue);

            $city = $doc->createElement("city");
            $city = $person->appendChild($city);

            $cityValue = $doc->createTextNode($memberArray['city']);
                        //$cityValue = $doc->createTextNode($member->get_city());
            $cityValue = $city->appendChild($cityValue);

            $state = $doc->createElement("state");
            $state = $person->appendChild($state);

            $stateValue = $doc->createTextNode($memberArray['state']);
                        //$stateValue = $doc->createTextNode($member->get_state());
            $stateValue = $state->appendChild($stateValue);

            $zip = $doc->createElement("zip");
            $zip = $person->appendChild($zip);

            $zipValue = $doc->createTextNode($memberArray['zip']);
                        //$zipValue = $doc->createTextNode($member->get_zip());
            $zipValue = $zip->appendChild($zipValue);

                        $image = $doc->createElement("image");
                        $image = $person->appendChild($image);

                        $imageValue = $doc->createTextNode($memberArray['image']);
                        $imageValue = $image->appendChild($imageValue);

            $titles = $doc->createElement("title");
            $titles = $person->appendChild($titles);

                        $titlesValue = $doc->createTextNode($memberArray['title']);
            //$titlesValue = $doc->createTextNode($member->get_field5());
            $titlesvalue = $titles->appendChild($titlesValue);

                        $group = $doc->createElement("group");
                        $group = $person->appendChild($group);

                        $groupValue = $doc->createTextNode($memberArray['group']);
                        $groupVAlue = $person->appendChild($groupValue);
        }
        print "<br>Saving XML<br><br>";
        $xml_string = $doc->saveXML();
        print "XML<br>";
        print $xml_string;
                print "<br>";
                print "Path: " . $_SESSION['ini']['rootPath'] . "public_html/v/p.xml";

        //if($doc->save($_SESSION['ini']['htmlPath'] . "v/p.xml")) return true;
                //else return false;
                print "Bytes: " . $doc->save($_SESSION['ini']['rootPath'] . "public_html/v/p.xml");

    }

saveXML完成时,我真的需要另外一套眼睛,甚至将$xml_string吐出到屏幕上。但是,$doc->save根本没有显示任何内容。

想法?

1 个答案:

答案 0 :(得分:1)

如果要将xml保存到文件,则需要使用save,而不是saveXML

您是否将文件名传递给保存?保存就像:

$filename=$_SESSION['ini'][rootPath] . "v/p.xml";
$doc->save($filename);

其他问题:$_SESSION['ini'][rootPath]你确定它是否已经设定?