Mar*_*lle 3 xml pretty-print swift swift3
使用Swift 2.2,我曾经像这样美化XML:
let detxTag = NSXMLElement(name: "detx")
let xml = NSXMLDocument(rootElement: detxTag)
// ...
let data = xml.XMLDataWithOptions(NSXMLNodePrettyPrint | NSXMLNodeCompactEmptyElement)
Run Code Online (Sandbox Code Playgroud)
不幸的是,使用此代码不再使用Swift 3(由Xcode 8自动转换):
let detxTag = XMLElement(name: "detx")
let xml = XMLDocument(rootElement: detxTag)
// ...
let data = xml.xmlData(withOptions: NSXMLNodePrettyPrint)
Run Code Online (Sandbox Code Playgroud)
它会产生以下错误:
Use of unresolved identifier 'NSXMLNodePrettyPrint'
Run Code Online (Sandbox Code Playgroud)
似乎进/出选项已经改变但是如何使用它并不是很清楚:https://developer.apple.com/reference/foundation/xmldocument/input_and_output_options
任何的想法?
Mar*_*n R 10
xmlData(withOptions:)接受XMLNode.Options,但必须转换为Int:
let data = xml.xmlData(withOptions: Int(XMLNode.Options.nodePrettyPrint.rawValue))
Run Code Online (Sandbox Code Playgroud)
或多种选择:
let options: XMLNode.Options = [.nodePrettyPrint, .nodeCompactEmptyElement]
let data = xml.xmlData(withOptions: Int(options.rawValue))
Run Code Online (Sandbox Code Playgroud)
从Swift 4开始, xmlData(withOptions:)采用一个XMLNode.Options
参数,所以这简化为
let data = xml.xmlData(options: .nodePrettyPrint)
Run Code Online (Sandbox Code Playgroud)
对于单一选项,或
let data = xml.xmlData(options: [.nodePrettyPrint, .nodeCompactEmptyElement])
Run Code Online (Sandbox Code Playgroud)
多种选择.
| 归档时间: |
|
| 查看次数: |
1652 次 |
| 最近记录: |