我从javascript收到xml并将其解析为struct。
PHP_FUNCTION(test_string)
{
char *arg = NULL;
int arg_len, len;
char string[256];
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
return;
}
len = sprintf(string, "String:%s", arg);
RETURN_STRINGL(arg, arg_len);
}
如何将此结构转换回xml以传递给javascript?
答案 0 :(得分:0)
从你的代码我不知道folderDetail
类型是什么样的,但我们假设它是这样的:
struct folderDetail {
var desc:String
var value:String
}
我也不知道您的XML模式是什么,但我们假设它是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<gcrInfoStruct>
<folderView>Folder View String</folderView>
<actionType>Action Type String</actionType>
<isProtocolReview>True or False</isProtocolReview>
<folder>
<folder1desc>folder1value</folder1desc>
<folder2desc>folder2value</folder2desc>
</folder>
</gcrInfoStruct>"
如果我猜测正确的行然后生成XML,我们只需要生成一个匹配基于结构的模式的字符串,例如。
extension gcrInfoStruct {
func xml() -> String {
var string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gcrInfoStruct><folderView>\(folderView)</folderView><actionType>\(actionType)</actionType><isProtocolReview>\(isProtocolReview)</isProtocolReview><folder>"
for i in self.folder {
string.appendContentsOf("<\(i.desc)>\(i.value)</\(i.desc)>")
}
string.appendContentsOf("</folder></gcrInfoStruct>")
return string
}
}
要实现我们会做这样的事情:
var gcr = gcrInfoStruct()
// update properties
let xml = gcr.xml()
但是如果我们想将XML作为NSData返回,那么我们将添加这些额外的代码:
extension gcrInfoStruct {
func xmlData() -> NSData? {
return self.xml().dataUsingEncoding(NSUTF8StringEncoding)
}
}
并实施我们会做这样的事情:
var gcr = gcrInfoStruct()
// update properties
let data = gcr.xmlData()
可能folderDetail
不仅仅是一对字符串,或者XML模式有所不同,但希望有足够的资源可以帮助您入门。