【发布时间】:2011-01-20 22:28:24
【问题描述】:
我正在尝试使用我在 PHP 中创建的 NSXMLParser 解析 xml 字符串。 我的 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 有什么问题,我可以正确接收它,就像在 This removes the \n .... 下一样。
我尝试调试,但是在使用 [parser parse] 启动解析器后,没有调用任何委托函数(是的,我设置了委托)除了 parserError。 由于 xml 前后仍有空格,可能这就是原因,但我无法将它们取出。 在我在 iPhone 上的应用程序中,我尝试了不同的编码,UTF8 和 ASCII。 我还尝试将接收到的数据转换为字符串,称为
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet
并转换回来。
我还设置了以下内容:
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
我不知道我做错了什么,请帮忙。
提前致谢。
【问题讨论】:
-
你用 PHP 创建了一部 iPhone?太棒了!
标签: php iphone objective-c xml parsing