带有solo标签的NSXMLElement.即.<tagname attributename = attributevalue />

Ren*_*ith 4 macos objective-c nsxml nsxmldocument nsxmlelement

我正在尝试创建一个应该包含solo标签的XML字符串(即.标签没有单独的结束标签)我能够创建正常的xml标签,如

<tagname attribute=attributevalue></tagname>
Run Code Online (Sandbox Code Playgroud)

使用代码

NSXMLElement *childElement=[[NSXMLElement alloc] initWithName:childName];
childElement.stringValue=childValue;
[childElement addAttribute:[NSXMLNode attributeWithName:attributeName stringValue:attributeValue]];
[self.currentNode addChild:[childElement copy]];
Run Code Online (Sandbox Code Playgroud)

但我需要这样的

<tagname attributename=attributevalue />
Run Code Online (Sandbox Code Playgroud)

小智 8

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

像这样 :

NSData *xmlData =
  [xmlDoc XMLDataWithOptions:NSXMLNodePrettyPrint | NSXMLNodeCompactEmptyElement];
Run Code Online (Sandbox Code Playgroud)

然后序列化您的文件:

  [xmlData writeToURL:theFile atomically:YES]
Run Code Online (Sandbox Code Playgroud)

参考:NSXMLNode类引用
Section Constants

NSXMLNodeExpandEmptyElement
  请求在空时扩展元素; 例如,<flag> </ flag>.这是默认值.
  适用于Mac OS X v10.4及更高版本.在NSXMLNodeOptions.h中声明.

NSXMLNodeCompactEmptyElement
  请求在空时应该收缩元素; 例如,<flag />.
  适用于Mac OS X v10.4及更高版本.在NSXMLNodeOptions.h中声明.