У меня есть следующие данные XML из веб-службы:NSXMLParser расщеплении XML TAG Значение
<ROWS>
<ROW>
<GroupBy>1</GroupBy>
<QUERY>
INSERT INTO TASKS_GVT([PK],[TaskYear],[TaskTypeId],[TaskElementType],[TaskPriority],[ElementId],[taskstatus],[TaskSubStatus],[AllocatedteamId],[PreRequisiteTask], [xloc],[yloc],[X],[Y],[Address],[TaskZone],[taskread],[clientid],[distance],[lastdistcalcdt],[ReplicateMe],[AllocationRequestTime]) VALUES ('3179543',2014,'19','1','2','107-08-106_421','3','6','380','0','0.0000000','0.0000000','44.4144000','24.5186000','الدوادمي ','421-0-0','R','0','0',GETDATE(),0,GETDATE())
</QUERY>
</ROW>
<ROW>
<GroupBy>2</GroupBy>
<QUERY>
INSERT INTO RPTProblemTypes_GVT ([TaskYear] ,[TaskCode] ,[pbTypeId] ,[ReportDate] ,[INSTANCENAME] ,[PK] ,[ParentId]) VALUES ('2015','3179543','754','Sep 11 2015 11:11AM','1-1086','380-1','1086')
</QUERY>
</ROW>
<ROW>
</ROWS>
Я читаю ответ веб-службы с помощью NSXMParser
так:
let parser = NSXMLParser (data: data!) //data is fetched using alamofire
методы делегата:
public func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
{
tagElement=elementName
}
public func parser(parser: NSXMLParser, foundCharacters string: String)
{
if (tagElement.uppercaseString == "QUERY")
{
dataReturned+=string;
print ("here dataReturned: \(string)")
}
}
public func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
}
Мой Выход:
here dataReturned: INSERT INTO TASKS_GVT([PK],[TaskYear],[TaskTypeId],[TaskElementType],[TaskPriority],[ElementId],[taskstatus],[TaskSubStatus],[AllocatedteamId],[PreRequisiteTask],
here dataReturned:
[xloc],[yloc],[X],[Y],[Address],[TaskZone],[taskread],[clientid],[distance],[lastdistcalcdt],[ReplicateMe],[AllocationRequestTime]) VALUES ('3179543',2014,'19','1','2','107-08-106_421','3','6','380','0','0.0000000','0.0000000','44.4144000','24.5186000','
here dataReturned: الدوادمي ','421-0-0','R','0','0',GETDATE(),0,GETDATE())
here dataReturned:
here dataReturned: INSERT INTO RPTProblemTypes_GVT ([TaskYear] ,[TaskCode] ,[pbTypeId] ,[ReportDate] ,[INSTANCENAME] ,[PK] ,[ParentId]) VALUES ('2015','3179543','754','Sep 11 2015 11:11AM','1-1086','380-1','1086')
Как вы можете видеть, меня интересует только извлечение тега QUERY
, но результат неправильный! Значение тега разделяется (т. Е. Метод foundCharacters
вызывается более одного раза на одном и том же теге), пожалуйста, кто-нибудь поможет мне в этой проблеме.
что я заметил, что этот случай происходит ТОЛЬКО, когда в теге есть арабские буквы. !!!
спасибо
если требуется еще какой-либо код, пожалуйста, сообщите мне –
Любой может здесь помочь? –