gpt4 book ai didi

iphone - 如果标签有重音,NSXMLParser 不会获取所有标签

转载 作者:行者123 更新时间:2023-11-28 22:39:23 24 4
gpt4 key购买 nike

我有一个对数据库进行不同更改的网络服务。当我使用带有 sql 标记的 web 服务返回行时,如下所示:

<sql>
DELETE FROM TABLE WHERE ...
</sql>
<sql>
INSERT INTO TABLE WHERE ...
</sql>
<sql>
UPDATE TABLE SET ... WHERE ...
</sql>

我将这些代码保存在 NSMutableArray 中,如下所示:

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName  {
if ([elementName isEqualToString:@"sql"]){
[maResultado addObject:[NSMutableString stringWithFormat:@"%@", ResultadoSoap]];
[ResultadoSoap setString:@""];
}
}

这很好,但是如果网络服务返回一个带有重音的单词(重音是因为是西类牙语),应用程序只会获取重音之后的短语。例子:Web 服务返回这个:

<sql>
INSERT INTO DATOS(datos, fecha) VALUES('Indagar si el médico a tenido oportunidad de ...', '20/02/2013')
</sql>

我这样做:

if ([elementName isEqualToString:@"sql"]){
[maResultado addObject:[NSMutableString stringWithFormat:@"%@", ResultadoSoap]];
[ResultadoSoap setString:@""];
}

在 objectatindex 的 maResultado 中只有这个:

édico a tenido oportunidad de ...', '20/02/2013')

最佳答案

对于一个 XML 元素,可以多次调用 parser:foundCharacters: 委托(delegate)函数。如果字符内容包含特殊字符,尤其会发生这种情况。在您的情况下,对于数据

<sql>
INSERT INTO DATOS(datos, fecha) VALUES('Indagar si el médico a tenido oportunidad de ...', '20/02/2013')
</sql>

委托(delegate)函数被调用两次,第一次调用字符串

INSERT INTO DATOS(datos, fecha) VALUES('Indagar si el m

然后再次使用字符串

édico a tenido oportunidad de ...', '20/02/2013')

因此,您必须追加 parser:foundCharacters: 中的字符串到当前字符串,例如

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[currentElementValue appendString:string];
}

关于iphone - 如果标签有重音,NSXMLParser 不会获取所有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14986699/

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