Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml][php] createDocumentType
Forum PHP.pl > Forum > XML, AJAX > XML
robis
Otóż robie sobie dokument XML, żeby zintegrować go z pasażem onetu. W ich specyfikacji wygląd DOCTYPE prezentuje się tak:

  1. <!DOCTYPE pasaz:Envelope SYSTEM "loadOffers.dtd">


zatem robie sobie xml w php-owskim DOMDocument i natrafilem na taki blad:

  1. <?php
  2. $dom= new DomImplementation();
  3. $cdata=$dom->createDocumentType('pasaz:Envelope', '', 'loadOffers.dtd');
  4. $xml=$dom->createDocument('', '', $cdata);
  5. ?>


i podczas wypisywania xmla na ekran dostaje DOCTYPE:
  1. <!DOCTYPE Envelope SYSTEM "loadOffers.dtd">


zatem pomija mi to co przed dwukropkiem.

Co mam zrobic zeby mi to poprawnie dzialalo?
splatch
DTD nie obsługuje przestrzeni nazw.
robis
Zatem co mi radzisz? :-)
splatch
Jadąc po najmniejszej linii oporu - wywalić doctype.
Druga linia oporu - str_replace.

No i na końcu ...
Warto zwrócić uwagę, że jest to w gruncie rzeczy rozszerzenie SOAP:
Kod
<pasaz:Envelope xmlns:pasaz="http://schemas.xmlsoap.org/soap/envelope/" />

Wystarczy spojrzeć na przestrzeni nazw xmlns:pasaz, by zobaczyć, że jest to rozszerzenie, zatem trzecia opcja - poprosić panów z pasażu o udostępnienie deskryptora usługi (URL pliku WSDL), by móć korzystać z normalnych interfejsów programistycznych. Spójrz na przykład na punkt 13 w podręczniku integracji - jest tam wysyłane najnormalniejsze na świecie zapytanie via SOAP, pytanie tylko - dlaczego okrężną drogą, miast SOAP Clientem? smile.gif
robis
Dzieki :-)

A wiesz moze jak zrobic zeby DOMDocument robil wciecia i przejscia do nowej linii przy tworzeniu XMLA? Wiem ze to tylko kosmetyka ale smile.gif

[EDIT] Wielkie dzieki - jestem Twoim dłużnikiem smile.gif
splatch
  1. <?php
  2. $domDocumentObj->formatOutput = true
  3. ?>
robis
Aaa nie mów hop zanim....

Wystąpił problem przy konwertowaniu znaków do ISO-8859-2 z UTF-8. A mianowicie błąd jaki występuje to :

Kod
output conversion failed due to conv error Bytes: 0xB6 0x74 0x61 0x6D

a wystepuje przy
  1. <?php
  2. $this->xml->saveXML();
  3. ?>


przekodowywanie zatrzymuje sie przy polskich znakach oczywsicie smile.gif

Ma ktoś koncepcję? smile.gif
mike
Czy ustawiasz poprawne kodowanie przy tworzeniu obiektu DOM?
  1. <?php
  2. new DOMDocument('1.0', 'UTF-8');
  3. ?>
robis
ustawiam ISO, bo do ISO mam konwertowac - onet wymaga danych w ISO. Wiec DOMDocument sam dokonuje konwersji :] Z widocznym wyzej skutkiem:] Ja w bazie trzymam dane w UTF.

Tamten problem rozwiazany (dalem najpierw UTF, potem str_replace i normalnie iconv konwertowalem smile.gif )

I mam oto kolejne pytanie - jak za pomocą nuSOAP lub phpowskiego soapclienta wyslac gotowe dane - czyli nie call('nazwafunkcji', $dane) tylko zeby przekazac kod xml <?xml .... ?
SHARKI
ale dtd to opic xml'a czyli podanie czy dane pole ma liczba albo słowem ile ma miec znaków i takie ten
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.