问题标签 [swxmlhash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 使用 swxmlhash 将 xml 转换为自定义类型的问题
我正在尝试转换以下 xml 标记:
到等效类型,但无法从提供的示例中找到任何方法来做到这一点。
试过,
相应地,
这无论如何都是错误的。将以下标记转换为其等效自定义类型的方法是什么?
ios - 提高下载多个 XML 文件并解析它们的效率
我正在使用 Alamofire 从 Web 服务器下载五个 XML 文件,并使用 SWXMLHash 解析它们。最后一个文件依赖于前四个文件,其某些条目引用前四个中包含的条目。我对下载代码使用级联样式结构,以确保在开始下载最后一个文件之前下载所有四个文件。
如您所见,每个下载段都等待前一个下载段完成。此外,进度条会在下载过程中更新。大多数 XML 文件的大小从小到大(80 行 - 10K 行),最后一个是最大的,包含大约 200K 行。
我不确定是不是因为级联样式结构,但是下载和解析前四个文件大约需要 10 秒。有没有可能让它更快?我只是想知道我是否可以提高效率。这是cpu使用和mem使用的截图。
PS我在模拟器上运行这个应用程序。
swift3 - 可能返回 nil 的 swxmlhash 条件反序列化
我正在使用 SWXMLHASH Swift 库来解析一些第 3 方 XML 数据。此数据有时会返回对我的应用程序无效的值。发生这种情况时,我希望忽略这些数据并返回nil
而不是Self
在我的deserialize
函数中。
例如,我有一些这样的 XML:
我希望能够测试 ChangeCount 值,如果它等于 0,我希望能够在我的 ColourChanges 结构nil
的函数中返回。deserialize
看来,当我deserialize
如下定义我的函数时:
static func deserialize(_ node: XMLIndexer) throws -> ColourChanges?
我收到一个运行时错误,抱怨deserialize
实现不存在。
deserialize
我相信当我遇到不需要的值并在调用者中处理它时,我可以通过从我的结构的方法中抛出来处理这个问题,但是,如果我可以只返回它会更干净nil
。
有没有人遇到过类似的问题,或者对如何实现这一点有任何建议?
谢谢你的帮助。
ios - Swift变量选择结构
问我问题的新方法。我以为很清楚,但显然不是。:-D 第二次机会。
我使用 SWXMLhash 从网站获取信息。对于每个网站,我需要不同的结构,因为每个网站的数据结构都不同。
我有一个很好的工作功能(使用 1 个网站作为源),我想根据所选网站将其转换为通用功能。
到目前为止我得到的最好的解决方案(见下面的代码)让我编译错误:
编译错误 = 对成员“下标”的不明确引用
功能代码:
我不知道如何解决这个问题。还有谁?
ps 在我使用的 1 个网站的原始功能中:
没有开关,效果很好。
xml - 从 XML 响应 Swift 中获取价值
我正在使用位于Here的 Swift xml 解析器库。我希望从以下具有特定值的 XML 中获取特定值。
下面的 XML 显示了设备上安装的应用程序列表,然后列出了有关每个应用程序的信息;比如版本和应用大小。每个<deviceSw>
都是设备上的不同应用程序。我希望从 com.fiberlink.browser 应用程序中获取版本值。旁注是我不能只在设备上获取第二个应用程序,因为某些设备可能会将 com.fiberlink.browser 列为第三个应用程序或第四个应用程序。有没有办法通过 XML 对 com.fiberlink.browser 的值进行排序,然后获取它的 Version 值?
编辑:
我已经尝试使用下面的代码来循环遍历键,并且可能会执行逻辑进行排序,但它返回 nil 值。
编辑2:
我将代码更改为以下内容:
什么都没有打印出来,它只是一个空白的输出窗口。
ios - 使用 SWXMLHash 反序列化 xml 时处理缺失的属性
我一直在关注SWXMLHash上的示例来反序列化 XML 文件。它工作得很好,但我不确定如何处理 XML 输入不完整的情况:
例如,假设 XML 输入是这样的:
为了反序列化这个 XML,我创建了以下结构,它是一个 XMLIndexerDeserializable
上面的代码有效,直到 shippingInfo XML 丢失一个元素,如下所示:
上面的第二个 XML 缺少属性"handlingTime"。运行上面的反序列化代码会在node["handlingTime"].value()抛出异常
解决此问题的一种方法是在我们访问 XMLIndexer 的键时尝试捕获异常,并在抛出异常时将默认值传递给属性,这意味着键不存在。我不认为这是最好的方法。
当 XML 缺少属性时,反序列化 XML 的最佳方法是什么?
xml - 在 Swift 4 中实现自定义解码器
我想使用Decodable
Swift 4 中引入的新协议解码 XML 文档,但是,似乎没有符合该Decoder
协议的 XML 解码器的现有实现。
我的计划是使用 SWXMLHash 库来解析 XML,然后可能使该XMLIndexer
库中的类扩展Decoder
协议,以便我的模型可以使用XMLIndexer
(XMLIndexer
由SWXMLHash.parse(xmlString)
) 的实例初始化。
我的问题是我不知道如何实现该Decoder
协议,而且我似乎无法在网上找到任何资源来解释它是如何完成的。我发现的每个资源都严格提到了JSONDecoder
包含在 Swift 标准库中的类,并且我发现没有任何资源可以解决创建您自己的自定义解码器的问题。
swift - SWXMLHash 的反序列化错误
我有以下 XML 结构(这是一个精简的示例):
使用以下模型:
我正在尝试按如下方式解析 XML:
但是,它一直失败并出现ImplementationIsMissing
错误,就好像我的自定义deserialize
函数不存在一样。
是什么赋予了?
swift - 无法从函数内更改全局变量
我正在尝试从 alamofire 变量中更改全局变量,但在执行此操作时遇到问题。这是我的代码:
当我在这里打印 self.projects 时,我得到一个空数组,但是当我在 httpRequest 函数中打印它时,我得到了正确的数据。我没有在 for 循环中设置全局变量项目吗?如何获得该函数之外的值?我已经尝试了我在 SO 上找到的所有东西,但没有成功。任何帮助是极大的赞赏。
只是为了了解更多信息,这是我的 httpRequest 函数:
swift - tableView.reloadData 期间索引超出范围
在某些刷新期间,我遇到了性能问题和索引超出范围错误。不是全部,但我正在努力解决它。
基本上,该应用程序将从 RSS 提要中收集数据并将其显示在表格视图中。这是我第一次使用我拥有的库,也是我第一次尝试正确制作 tableview 应用程序。
我相信刷新错误与我在refresh()
哪里以及我在哪里打电话有关projects.removeAll()
。我已经尝试将它们移动到其他地方,但我仍然遇到刷新问题。
我不知道为什么突然我有滚动滞后。如果有人有时间快速查看我的代码并给我建议,并尝试帮助我修复代码的刷新部分(以修复数组越界错误),那将是惊人的。
谢谢。
这是我的完整代码。