我正在尝试创建一个XML字符串,它应该包含单独的标签(即。标签),我可以创建普通的xml标签,比如
<tagname attribute=attributevalue></tagname>使用代码
NSXMLElement *childElement=[[NSXMLElement alloc] initWithName:childName];
childElement.stringValue=childValue;
[childElement addAttribute:[NSXMLNode attributeWithName:attributeName stringValue:attributeValue]];
[self.currentNode addChild:[childElement copy]];但我需要像这样
<tagname attributename=attributevalue />发布于 2012-09-07 15:27:58
在保存文件之前,在创建NSData时添加以下选项:NSXMLNodeCompactEmptyElement
如下所示:
NSData *xmlData =
[xmlDoc XMLDataWithOptions:NSXMLNodePrettyPrint | NSXMLNodeCompactEmptyElement];然后序列化你的文件:
[xmlData writeToURL:theFile atomically:YES]引用: NSXMLNode类引用
区段常量
NSXMLNodeExpandEmptyElement
它请求元素在为空时进行扩展;例如。这是默认设置。
这在Mac OS X v10.4和更高版本中可用。在NSXMLNodeOptions.h中声明。NSXMLNodeCompactEmptyElement
它请求在元素为空时收缩元素;例如,。
这在Mac OS X v10.4和更高版本中可用。在NSXMLNodeOptions.h中声明
发布于 2012-04-20 18:16:08
<tagname attribute=attributevalue></tagname>和
<tagname attributename=attributevalue />在XML中是完全等价的,只是格式问题,如何编写它们。如果您没有什么特别的理由去创建“格式化得很好”的XML源代码,我也不会为此而烦恼。
此外,上面的代码没有创建这两种表示:它将数据存储在内部结构中,而不是XML源代码的形式。只有当您想要将XML树结构导出到XML源文件中时,您的问题才有效。
发布于 2012-04-20 21:08:49
MrTJ所说的一切都是正确的,但是序列化程序可能被混淆了,因为您已经设置了节点的文本内容。它可能会看到文本内容节点(即使它的字符串长度为零),并创建开始和结束标记,因为它根本不存在。
尝试如下所示:
if ([childValue length] > 0)
{
childElement.stringValue=childValue;
}https://stackoverflow.com/questions/10244212
复制相似问题