gpt4 book ai didi

ios - NSXML解析器: not retrieving correct data if there are special characters or italics

转载 作者:行者123 更新时间:2023-11-29 04:05:38 25 4
gpt4 key购买 nike

我正在使用 NSXMLParser 来解析 xml 的 url。某些元素在文本中包含特殊字符以及斜体。

  • 请找到以下文本中带有斜体标签的 xml 元素:
<name>Verify Settings<i>i</i>patch level</name>

NSXMLParser 分解文本并给出输出:验证设置

有什么方法可以解析元素之间的斜体文本吗?

  • 请找到下面带有特殊字符的 xml:
<impact> In 2003, the ¿shared APPL_TOP¿ architecture was introduced, which allowed the sharing of a single APPL_TOP, however the tech stack
· Reduced disk space requirements
· Reduced maintenance
· Reduced administrative costs
· Reduced patching down time
· Less complex to add additional nodes, making scalability easier
· Complexity of instance reduced
· Easier backups
· Easier cloning</impact>

它打破了文本并给出了输出: e 成本 ·减少修补停机时间 ·添加额外节点的复杂性降低,使可扩展性更容易 ·实例的复杂性降低 ·更容易备份 ·更容易克隆

关于如何使用 NSXMLParser 解析文本中的斜体标签和特殊字符有什么建议吗?


这是我的foundCharacters代码:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (!self.currentStringValue) {
// currentStringValue is an NSMutableString instance variable
self.currentStringValue = [[NSMutableString alloc] init];
}
[self.currentStringValue appendString:string];
}

最佳答案

这两个问题看起来不像 XML 解析问题,而更像是 XML 生成问题。您是如何生成此 XML 的?它感觉像是手动生成的 XML,而不是由适当的 XML 库生成的东西。

从解析器的角度查看您的 XML:NSXMLParser 怎么样?应该知道<i><name> 中的 HTML元素,而不是新的 XML 标签本身?!?如果这确实是 XML 的样子,那么您确实应该修复您的 Web 服务。

例如,用斜体查看您的问题,问题是 <i>看起来像一个新的元素名称。一般来说,应该表示为:

<name>Verify Settings&lt;i&gt;i&lt;/i&gt;patch level</name>

或者作为

<name><![CDATA[Verify Settings<i>i</i>patch level]]></name>

name的编码属性通常由在 Web 服务中执行 XML 编码的 API 完成。一般来说,您不需要执行任何操作即可获得此行为。但是,如果您的 Web 服务手动创建自己的 XML,则可能会提供您在原始问题中描述的那种输出。

在第二个示例中,我认为 XML 中的字符必须符合 <?xml ...> 中概述的字符集。标签,例如:

<?xml version="1.0" encoding="ISO-8859-1"?>

你的<?xml ...>是什么?标签说?列出的字符是否属于此处列出的编码范围内?


查看您修改后的foundCharacters ,新的演绎要好得多。之前的演绎遇到了一个问题,因为它假设 foundCharacters对于任何给定的 <name> 只会被调用一次和</name>标签。情况不一定如此。您的最新演绎正确创建 currentStringValue如果需要,然后附加到它。这是正确的方法,与 Apple documentation 中的示例一致。 。您可能只想在解析 elementName 之一时才这样做您关心的类型(例如 <name> ),但有了这个小警告,这个新的再现看起来好多了。

关于ios - NSXML解析器: not retrieving correct data if there are special characters or italics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com