login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Xml elementen toevoegen bij huidige xml document

Offline Ultimatum - 10/03/2009 16:35 (laatste wijziging 16/03/2009 09:02)
Avatar van UltimatumPHP expert Ey, ik heb weer een probleem met xml. Ik moet een stuk uit een xml bestand vinden en daar dan element toevoegen. Dit lijkt makkelijk en is ook zo in de meeste gevallen maar omdat er namespaces in de xml van Word word gebruikt ik fouten. Dit is mijn xml die ik moet toevoegen in het bestand.
  1. <w:p>
  2. <w:pPr>
  3. <w:jc w:val="center"/>
  4. <w:rPr>
  5. <w:rFonts w:ascii="Arial" w:hAnsi="Arial"/>
  6. <w:color w:val="000000"/>
  7. <w:sz w:val="34"/>
  8. <w:szCs w:val="34"/>
  9. </w:rPr>
  10.  
  11. </w:pPr>
  12. <w:r>
  13. <w:t xml:space="preserve">TT HALL ASSEN</w:t>
  14. </w:r>
  15. </w:p>


Maar omdat ik de namespaces zelf niet in dit document heb (staat in het document waar dit stuk bijgevoegd moet worden), krijg ik de volgende fout.

Citaat:
Warning: simplexml_load_string() [function.simplexml-load-string]: namespace error : Namespace prefix w on p is not defined in


Ik moet dus door het xml stukje heen loopen en dan met SimpleXMLElement::addChild de childs toevoegen. Dit lukt wel zolang alles maar op "level" hoeft te staan, maar als ik het net zoals in het xml bestand wil hebben, dus met de childs dan krijg ik het niet voor elkaar. Iemand die me kan helpen?

Ik gebruik dit om door bovenstaand xml te loopen, de rest stelt niet veel voor want dat werkte allemaal niet.
  1. <?php
  2. $oParser = xml_parser_create();
  3. xml_parser_set_option($oParser, XML_OPTION_CASE_FOLDING, 0);
  4. xml_parser_set_option($oParser, XML_OPTION_SKIP_WHITE, 1);
  5. xml_parse_into_struct($oParser, $oWriter->writeText($oText)->outputMemory(true), $aValues, $aIndex);
  6. xml_parser_free($oParser);
  7.  
  8. foreach($aValues as $aTag) {
  9. if($aTag['type'] == 'open') {
  10. ?>


Niemand die me kan helpen .

2 antwoorden

Gesponsorde links
Offline Jas_per_post - 19/03/2009 02:39
Avatar van Jas_per_post JS interesse Gewoon een ideetje, hoor, maar kun je niet gewoon de namespace declaratie toevoegen en met LIBXML_NSCLEAN voorkomen dat er in je output geen extra namespace declaraties zitten?
Offline Ultimatum - 19/03/2009 08:49 (laatste wijziging 19/03/2009 09:08)
Avatar van Ultimatum PHP expert Dat is inderdaad wel een goed idee, ik zal eens kijken of ik het voor elkaar kan krijgen 

Dit is wat ik nu heb. Maar de string $xml word niet toegevoegt aan $oXml. $xml moet na $aResult[0] worden toegevoegd in het document. Enig idee wat ik verkeerd doe?

  1. <?php
  2. $oXml = simplexml_load_string($this->sDocument);
  3. $oXml->registerXPathNamespace('w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
  4. $aResult = $oXml->xpath('//w:bookmarkStart[@w:name="'. $sName .'"]/parent::*/w:pPr');
  5.  
  6. if($aResult[0] !== false) {
  7. $oWriter = new Writer($this->oWordDocument);
  8.  
  9. if($oText !== null) {
  10.  
  11. $xml = '<w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
  12. <w:p>
  13. <w:pPr>
  14. <w:jc w:val="center"/>
  15. <w:rPr>
  16. <w:rFonts w:ascii="Arial" w:hAnsi="Arial"/>
  17. <w:color w:val="000000"/>
  18. <w:sz w:val="34"/>
  19. <w:szCs w:val="34"/>
  20. </w:rPr>
  21.  
  22. </w:pPr>
  23. <w:r>
  24. <w:t xml:space="preserve">TT HALL ASSEN</w:t>
  25. </w:r>
  26. </w:p>
  27. </w:document>';
  28. $dom = new DOMDocument;
  29. $dom->loadXML($xml, LIBXML_NSCLEAN);
  30. if (!$dom) {
  31. echo 'Error while parsing the document';
  32. }
  33.  
  34. $aResult[0] = simplexml_import_dom($dom);
  35.  
  36. echo $oXml->asXml();
  37. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.356s