Я пытаюсь проанализировать строку XML с NSXMLParser, который я создал в PHP.
Мой PHP-скрипт:
$doc = new DomDocument('1.0');
//$doc->preserveWhiteSpace=false;
$root = $doc->createElement("root");
$root = $doc->appendChild($root);
$child = $doc->createElement("child");
$child = $root->appendChild($child);
$value = $doc->createTextNode("testvar");
$value = $child->appendChild($value);
$xml_string = $doc->saveXML();
print $xml_string;
Если я открою страницу в браузере, она покажет мне «testvar», как и должно быть.
Показывая источник, он показывает мне, что есть несколько пробелов:
begin ->| <?xml version="1.0"?>
<root><child>testvar</child></root>
|<--end
Установка для preserveWhitespace значения false ничего не меняет.
Поэтому я попытался с регулярным выражением в PHP:
$xml_string1 = preg_replace("/\s+</","<",$xml_string);
$xml_string2 = preg_replace("/>\s+/",">",$xml_string1);
print $xml_string2;
Это удаляет \ n и подводит меня к этому
begin-->| <?xml version="1.0"?><root><child>testvar</child></root> |<--end
В браузере всегда показывает желаемый результат: testvar
На iphone я получаю следующую ошибку:
**NSXMLParserErrorDomain Code = 64, Operation could not be completed.**
Я не знаю, в чем проблема с XML, я получаю его правильно, как в разделе Это удаляет \ n ....
Я попытался отладить, но после запуска парсера с помощью [parser parse] не вызывается ни одна из функций делегата (да, я установил делегат), за исключением parserError.
Поскольку до и после xml еще есть пробелы, возможно, в этом причина, но я не могу их вывести.
В моем приложении на iPhone я пробовал разные кодировки, UTF8 и ASCII.
Я также попытался преобразовать полученные данные в строку под названием
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet
и преобразован обратно.
Я также установил следующее:
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
Я не знаю, что я делаю неправильно, пожалуйста, помогите.
Заранее спасибо.