Мне нужно закодировать веб-службу, которая создает файл FM XML.
Ожидаемый выходной файл выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <ERRORCODE>0</ERRORCODE> <PRODUCT BUILD="27/11/2002" NAME="FileMaker Pro" VERSION="6.0Dv4"/> <DATABASE DATEFORMAT="dMyyyy" LAYOUT="" NAME="Schlüssel Adresse für green" RECORDS="3" TIMEFORMAT="k:mm:ss"/> <METADATA> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Datum" TYPE="DATE"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Sprache Typ" TYPE="TEXT"/> ... </METADATA> <RESULTSET FOUND="3"> <ROW MODID="0" RECORDID="1"> <COL> <DATA>12.11.2012</DATA> </COL> ... </ROW> </RESULTSET> </FMPXMLRESULT>
Это мой php-код:
$xml = new SimpleXMLElement('<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"></FMPXMLRESULT>'); $xml->addChild('ERRORCODE',0); $xml->addChild('PRODUCT BUILD="27/11/2002" NAME="FileMaker Pro" VERSION="6.0Dv4"'); $xml->addChild('DATABASE DATEFORMAT="dMyyyy" LAYOUT=" " NAME="Schlüssel Adresse für green" RECORDS="3" TIMEFORMAT="k mm ss" '); $node = $xml->addChild('METADATA'); $node->addChild('FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Datum" TYPE="DATE"'); $node->addChild('FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Sprache Typ" TYPE="TEXT"'); ... $node = $xml->addChild('RESULTSET FOUND="3"'); $node->addChild('FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Datum" TYPE="DATE"');
Есть две вещи, с которыми я не могу работать:
TIMEFORMAT = "k: mm: ss" в узле DATABASE вызывает следующую ошибку. Удаление двоеточий: «решает проблему с сообщением об ошибке, но не будет выдавать тот же файл
ошибка в строке 2 в столбце 80: имя атрибута разбора ошибок
Как только в РЕЗУЛЬТАТЕ есть «FOUND =» 3 »« И дочерний элемент, узел RESULTSET вызывает ошибку. Это не вызывает ошибок, если нет дочернего элемента. Нет ошибки, если FOUND = "3" удаляется.
Эта страница содержит следующие ошибки:
ошибка в строке 2 в столбце 2199: ожидается '>'
Любая помощь очень ценится!