Save xslt form in mysql using zend 1.12

Question

I want to save xml document in mysql database as below:

 $_docId= $this->getRequest()->getParam('docId', 0);
$_slmData = '<SLM_form_v2 id="slmform"><group_1_1><section1_1/><name1_1>sdfds</name1_1>
enter code here<localname1_2/><selectcountry_1_3>Algeria</selectcountry_1_3></group_1_1>
enter code here<group_1_2><main_doc/><name_doc1>gdgf gfh f</name_doc1><sex_doc1>Male
</sex_doc1><name_institution_1>fsdgdfg</name_institution_1><address_institution_1>gdgfdgfd
</address_institution_1>....';

            $_docMapper = new Model_Mapper_XMLDoc();
            $_docModel = new Model_XMLDoc();

            $_docModel ->doc_data = Zend_Json::encode($_docData);

            if ($_docId != 0) {
                $_docModel->id = $_docId;
                $_docMapper->update($_docModel->toArray(), 'id = ' . $_docId);
                $_action = 'update';
            } else {
                $_docMapper->insert($_docModel->toArray());
                $_lastId = $_docMapper->getAdapter()->lastInsertId(); //gets the id of the last inserted record
                $_action = 'add';
            }
$this->_helper->json->sendJson(array(
                'message' => 'success',
                'id' => $_lastId,
                'action' => $_action
            ));

It is stored in the db:

INSERT INTO crpcoreix.tbl_xml_doc (slm_data, web_gis_fk) VALUES ('"<SLM_form_v2 id=\\"slmform\\"><group_1_1><section1_1\\/><name1_1>sdfds<\\/name1_1><localname1_2\\/><selectcountry_1_3>Algeria<\\/selectcountry_1_3><\\/group_1_1><group_1_2><main_doc\\/><name_doc1>gdgf gfh f<\\/name_doc1><sex_doc1>Male<\\/sex_doc1><name_institution_1>fsdgdfg<\\/name_institution_1><address_institution_1>gdgfdgfd gdgf<\\/address_institution_1>...', null);

When I'm trying to read the data from the database and display the encoded xml tags the output miss the first part ("<SLM_form_v2 id=\\"slmform\\"><group_1_1><section1_1\\/><name1_1>...) the first part

Array
(
    [id] => 1
    [xml_data] => "sdfds<\/name1_1>Algeria<\/selectcountry_1_3>...'
    [web_gis_fk] => 
)

Please advice how to fix and if there is a better way to store xml documents in database.

Thanx,


Show source
| php   | xml   | zend-framework   | mysql   | xslt   2016-12-12 14:12 1 Answers

Answers ( 1 )

  1. 2016-12-14 19:12

    first is first you need to double check your given xml syntax, wether its correct or not.

    Zend_Json includes a static function called Zend_Json::fromXml(). so you would better manage to use it instead of Zend_Json::encode when you encode XML

    This function will generate JSON from a given XML input.

    This function takes any arbitrary XML string as an input parameter. It also takes an optional Boolean input parameter to instruct the conversion logic to ignore or not ignore the XML attributes during the conversion process.

    If this optional input parameter is not given, then the default behavior is to ignore the XML attributes. This function call is made as shown below:

    $jsonContents = Zend_Json::fromXml($xmlStringContents, true);
    

    Give it a try but again check your XML syntax

◀ Go back