gpt4 book ai didi

ios - 将 NSDictionary 转换为 XML

转载 作者:可可西里 更新时间:2023-11-01 05:14:18 25 4
gpt4 key购买 nike

我需要以 XML 格式发布数据。服务器接受特定的 xml 格式。我不想手动编写 xml,我想做的是创建一个 NSMutableDictionary 填充它并从 NSMutableDictionary 将其转换为 XML。

我用这个:

[NSPropertyListSerialization dataWithPropertyList:data format:NSPropertyListXMLFormat_v1_0 options:0

样本返回是这样的:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0">
<dict>
<key>email</key>
<string>me@n.net</string>
<key>invoice_date</key>
<string>2012-10-11T10:35:09Z</string>
<key>invoice_lines</key>
<array>
<dict>
<key>product_id</key>
<integer>1021493</integer>
<key>quantity</key>
<real>1</real>
<key>retail_price</key>
<real>110</real>
</dict>
</array>
<key>payments</key>
<array>
<dict>
<key>amount</key>
<real>288.5</real>
</dict>
<dict>
<key>payment_type_id</key>
<integer>1</integer>
</dict>
</array>

服务器无法读取上述格式。

服务器需要这样的 xml 提要。

  <invoice>
<invoice_date>2012-10-11T10:35:09Z</invoice_date>
<email>me@n.net</email>
<invoice_lines type="array">
<invoice_line>
<product_id>1021505</product_id>
<quantity>1</quantity>
<retail_price>45</retail_price>
</invoice_line>
</invoice_lines>
<payments type="array">
<payment>
<amount>288.5</amount>
</payment>
</payments>

</invoice>

是否可以从 NSDictionary 生成上述 xml?

谢谢!

最佳答案

简短的回答是:不,Cocoa 库中没有这样做的内置能力。

因为您是在编写而不是解析,而且可能处理的可能标记的范围有限,所以输出 XML 的代码实际上并不那么复杂。它应该只是您的 Invoice 对象中的一个简单方法,例如:

- (NSString*) postStringInXMLFormat
{
NSMutableString* returnValue = [[NSMutableString alloc] init];
if([self email])
{
[returnValue appendString:@"<email>"];
[returnValue appendString:[self email]];
[returnValue appendString:@"</email>"];
}
if([self invoice_date])
...

等等。最后返回

[NSString stringWithString:returnValue]

有很多第三方项目试图推广这个过程;此答案中列出了其中的几个:

Xml serialization library for iPhone Apps

但是,如果您要做的只是创建一种您的服务器端可以识别的单一、稳定的格式,并且您没有大量需要转换的实体,那么自己动手可能会更省力。

关于ios - 将 NSDictionary 转换为 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12837965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com