gpt4 book ai didi

ios - Objective-C中NSXMLParser解析数字和汉字

转载 作者:行者123 更新时间:2023-11-28 18:38:36 24 4
gpt4 key购买 nike

这是我的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Tests>
<Test case="1">
<str>200000</str>
</Test>
<Test case="2">
<str>200thousand</str>
</Test>
<Test case="3">
<str>共20萬</str>
</Test>
<Test case="4">
<str>20萬</str>
</Test>
</Tests>

这是解析器的一部分,这是非常标准的,因为我在大多数教程中都找到了它:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else
currentElementValue =
(NSMutableString *) [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

然后我使用这一行将每个 currentElementValue 解析为 testObj 的每个变量

[testObj setValue:currentElementValue forKey:elementName];

代码成功将 XML 解析为 testObj。但是,问题是在情况4中,“20”消失了。即一旦一个元素以数字开头,然后是汉字,数字就消失了。

此外,如果我使用:

        [currentElementValue appendString:string];

代替:

        currentElementValue = 
(NSMutableString *) [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];

元素可以显示所有字符,但以许多空格开头。

我想弄清楚为什么数字消失了,并寻找解决方案来显示所有字符而不以空格开头。

在此先感谢您提供的任何帮助!

最佳答案

请参阅parser:foundCharacters: 委托(delegate)方法的文档:

The parser object may send the delegate several parser:foundCharacters: messages to report the characters of an element. Because string may be only part of the total character content for the current element, you should append it to the current accumulation of characters until the element changes.

所以你必须在foundCharacters中使用appendString。额外的空白可能是由于您没有在 didStartElementdidEndElement 中重置当前字符串造成的:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
currentElementValue = nil;
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if (currentElementValue) {
NSLog(@"%@ = %@", elementName, currentElementValue);
currentElementValue = nil;
}
}

如有必要,您可以删除 didEndElement 中不需要的空格。

关于ios - Objective-C中NSXMLParser解析数字和汉字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14670134/

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