IOS xml 与NSDictionary 互相转换

引言:

在ios中经常遇到 xml文件或字符串 转换成NSDictionary;

需求:

web服务端请求和返回的数据格式为xml;需根据解析xml文件动态生成控件;表单可能填值并需临时保存;一个表单就是<a/>包含内容,表单只要id,name就行;

如果表单填写值,需再<a/>里添加value。

<a>

<f>1</f>   <!--id-->

<n>2ewew</n>  <!--名字-->

<q>2ewew</q> <!--验证-->

</a>

<a/>

..................


参考https://codeload.github.com/nicklockwood/XMLDictionary/zip/master

并在XMLDictionary.m文件找到innertext并修改如下:

- (id)innerText
{
    id text = self[XMLDictionaryTextKey];
    if ([text isKindOfClass:[NSArray class]])
    {
        return [text componentsJoinedByString:@"\n"];
    }
    else
    {
        //判断value值是否为空
        if ([(NSString *)text length]==0) {
            return @"";
        }else
        return text;
    }
}


以上修改后 不管1、<a><f><t><t/><f/><a>还是2、<a><f><t>4424<t/><f/><a/>

xml 与NSDictionary 都可以互相转换;

否则

出现如下情况:

<?xml version="1.0" encoding="utf-8"?><transactions><transaction><head></head></transaction></transactions>

1、

dictionary: {
    "__name" = transactions;
}

XMLString==========
<transactions/>======

修改后

dictionary: {
    "__name" = transactions;
    transaction =     {
        head = "";
    };
}

MLString==========
<transactions><transaction><head></head>
</transaction>
</transactions>======




参考https://codeload.github.com/nicklockwood/XMLDictionary/zip/master

源码代码地址:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。