首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有单人标签的NSXMLElement。即。<标记名attributename=attributevalue />

带有单人标签的NSXMLElement。即。<标记名attributename=attributevalue />
EN

Stack Overflow用户
提问于 2012-04-20 18:10:53
回答 3查看 1.5K关注 0票数 4

我正在尝试创建一个XML字符串,它应该包含单独的标签(即。标签),我可以创建普通的xml标签,比如

代码语言:javascript
复制
<tagname attribute=attributevalue></tagname>

使用代码

代码语言:javascript
复制
NSXMLElement *childElement=[[NSXMLElement alloc] initWithName:childName];
childElement.stringValue=childValue;
[childElement addAttribute:[NSXMLNode attributeWithName:attributeName stringValue:attributeValue]];
[self.currentNode addChild:[childElement copy]];

但我需要像这样

代码语言:javascript
复制
<tagname attributename=attributevalue />
EN

回答 3

Stack Overflow用户

发布于 2012-09-07 15:27:58

在保存文件之前,在创建NSData时添加以下选项:NSXMLNodeCompactEmptyElement

如下所示:

代码语言:javascript
复制
NSData *xmlData =
  [xmlDoc XMLDataWithOptions:NSXMLNodePrettyPrint | NSXMLNodeCompactEmptyElement];

然后序列化你的文件:

代码语言:javascript
复制
  [xmlData writeToURL:theFile atomically:YES]

引用: NSXMLNode类引用

区段常量

NSXMLNodeExpandEmptyElement

它请求元素在为空时进行扩展;例如。这是默认设置。

这在Mac OS X v10.4和更高版本中可用。在NSXMLNodeOptions.h中声明。NSXMLNodeCompactEmptyElement

它请求在元素为空时收缩元素;例如,。

这在Mac OS X v10.4和更高版本中可用。在NSXMLNodeOptions.h中声明

票数 8
EN

Stack Overflow用户

发布于 2012-04-20 18:16:08

代码语言:javascript
复制
<tagname attribute=attributevalue></tagname>

代码语言:javascript
复制
<tagname attributename=attributevalue />

在XML中是完全等价的,只是格式问题,如何编写它们。如果您没有什么特别的理由去创建“格式化得很好”的XML源代码,我也不会为此而烦恼。

此外,上面的代码没有创建这两种表示:它将数据存储在内部结构中,而不是XML源代码的形式。只有当您想要将XML树结构导出到XML源文件中时,您的问题才有效。

票数 2
EN

Stack Overflow用户

发布于 2012-04-20 21:08:49

MrTJ所说的一切都是正确的,但是序列化程序可能被混淆了,因为您已经设置了节点的文本内容。它可能会看到文本内容节点(即使它的字符串长度为零),并创建开始和结束标记,因为它根本不存在。

尝试如下所示:

代码语言:javascript
复制
if ([childValue length] > 0)
{
    childElement.stringValue=childValue;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10244212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档