gpt4 book ai didi

iphone - TBXML 将复杂的 xml 解析成数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:21:04 24 4
gpt4 key购买 nike

我有一个 xml 响应需要设置到一个数组中。问题是我需要访问每个元素并将其存储在一个数组中,以便我可以将它用于 tableview。

<?xml version="1.0" encoding="UTF-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schema.2sms.com/2.0/schema/0310_ResponseReportStandard.xsd" Version="1.0">
<Error>
<ErrorCode>00</ErrorCode>
<ErrorReason>OK</ErrorReason>
</Error>
<ResponseData>
<Identification>
<UserID>jonathan.pink@2sms.com</UserID>
</Identification>
<Result>2 records were returned</Result>
<Detail>
<ReportTitle>Message Summary: Today</ReportTitle>
<Record>
<Destination>447790686158</Destination>
<Status>WithNetwork</Status>
<GUID><![CDATA[2011-03-22T10:54:22.097Z]]></GUID>
<DateSubmitted>2011-03-22T10:54:22.097</DateSubmitted>
<DateToSend></DateToSend>
<DateSent>2011-03-22T10:54:22.533</DateSent>
<DateReceived></DateReceived>
<Message><![CDATA[Yet again another test]]></Message>
<ID>2011-03-22 10:54:22.250HIHIIOJTFVETW85TS</ID>
</Record>
<Record>
<Destination>447790686158</Destination>
<Status>SUCCESS</Status>
<GUID><![CDATA[2011-03-22T10:50:40.064Z]]></GUID>
<DateSubmitted>2011-03-22T10:50:40.063</DateSubmitted>
<DateToSend></DateToSend>
<DateSent>2011-03-22T10:50:42.473</DateSent>
<DateReceived>2011-03-22T10:50:54.570</DateReceived>
<Message><![CDATA[This is a test]]></Message>
<ID>2011-03-22 10:50:40.210DRUDVMCEZGETW85TS</ID>
</Record>
<ReportPage ReportID="775797" ItemsPerPage="25" Page="1" TotalItems="2" />
</Detail>
</ResponseData>
</Response>

我已经初始化了 TBXML 对象,但不知道如何获取任何重复出现的信息,我知道它需要某种循环,但我对 Objective-C 还很陌生,所以它证明是一个挑战。

我需要得到 <destination> , <status>, <datesent>, <message>从 xml。最多可以有 25 条记录....

希望有人能帮助我一整天都在思考这个问题!

最佳答案

我最近做了类似的事情,你可以很快适应,我的 XML 是:

<?xml version="1.0" encoding="ISO-8859-1"?>
<agencies>
<agency>
<name>Agency 1 name</name>
<addressFirstLine>Immeuble XYZ<addressFirstLine>
<addressSecondLine>rue de la republique</addressSecondLine>
<addressThirdLine>69007 Lyon</addressThirdLine>
<telNumber>01 23 45 67 89</telNumber>
</agency>
<agency>
<name>Agency 2 name</name>
<addressFirstLine>Immeuble ABC<addressFirstLine>
<addressSecondLine>rue de la republique</addressSecondLine>
<addressThirdLine>69007 Lyon</addressThirdLine>
<telNumber>01 23 45 67 89</telNumber>
</agency>
</agencies>

我用来解析它的代码(在我的 NSArray 中得到结果称为 agencies):

    TBXML *tbxml = [[TBXML tbxmlWithXMLFile:yourXmlFile retain];
TBXMLElement *rootXMLElement = tbxml.rootXMLElement;

if (rootXMLElement) {
self.agencies = [self traverseElement:rootXMLElement];
[delegate managerDidReceiveData];
}

// release resources
[tbxml release];

我的函数转换为数组:

- (NSArray *)traverseElement:(TBXMLElement *)element {

NSMutableArray *tmpAgencies = [[NSMutableArray alloc] init];

TBXMLElement *agenciesXmlElement = element->firstChild;
TBXMLElement *agencyXmlElement;

do {

// if the element has child elements, process them
if ((agencyXmlElement = agenciesXmlElement->firstChild)) {

NSMutableDictionary *tmpAgency = [[NSMutableDictionary alloc] init];

do {
[tmpAgency setValue:[TBXML textForElement:agencyXmlElement] forKey:[TBXML elementName:agencyXmlElement]];

// Obtain next sibling element
} while ((agencyXmlElement = agencyXmlElement->nextSibling));

[tmpAgencies addObject:tmpAgency];
[tmpAgency release];
}

// Obtain next sibling element
} while ((agenciesXmlElement = agenciesXmlElement->nextSibling));

return tmpAgencies;
}

此函数将返回一个数组,其中包含代表您的记录NSDictionary 对象。NSDictionary 使用简单,要获取属性,您可以使用 [yourDictionary objectForKey:yourXmlNode]。文档在这里:NSDictionary .

关于iphone - TBXML 将复杂的 xml 解析成数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5393433/

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