欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

iosxml開(kāi)發(fā),ios coreml

ios 開(kāi)發(fā)怎么用代碼生成xml文件

在ios開(kāi)發(fā)中,可以使用GDataXML生成xml

十余年的滎陽(yáng)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整滎陽(yáng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“滎陽(yáng)網(wǎng)站設(shè)計(jì)”,“滎陽(yáng)網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

GDataXML只有兩個(gè)文件GDataXMLNode.h和GDataXMLNode.m。使用方法如下:

將文件包含進(jìn)工程后,添加libxml2.dylib:

之后添加路徑${SDK_ROOT}/usr/include/libxml2:

現(xiàn)在可以編寫(xiě)代碼了:

#import?"GDataXMLNode.h"

// 創(chuàng)建一個(gè)根標(biāo)簽

GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"root"];

// 創(chuàng)建一個(gè)屬性

GDataXMLElement *attribute = [GDataXMLNode attributeWithName:@"a" stringValue:@"b"];

// 創(chuàng)建一個(gè)標(biāo)簽元素

GDataXMLElement *element = [GDataXMLNode elementWithName:@"user" stringValue:@"HelloWorld"];

// 把標(biāo)簽與屬性添加到根標(biāo)簽中

[rootElement addAttribute:attribute];

[rootElement addChild:element];

// 生成xml文件內(nèi)容

GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithRootElement:rootElement];

NSData *data1 = [xmlDoc XMLData];

NSString *xmlString = [[NSString alloc] initWithData:data1 encoding:NSWindowsCP1253StringEncoding];

NSLog(@"xmlString ?%@", xmlString);

結(jié)果:

?xml version="1.0"?

root a="b"userHelloWorld/user/root

ios開(kāi)發(fā)如何獲取xml開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽之間的內(nèi)容

解析xml, 在ios中可以使用NSXMLParser 類(lèi)來(lái)解析。當(dāng)然也有一些第三方庫(kù)可以方便操作,如:GDataXml

ios開(kāi)發(fā) 在工程中拖入gdataxmlnode怎么出現(xiàn)了 libxml/tree.h'file not found

1. 選擇xcode工程設(shè)定

2. 選擇target

3. 選擇Summary

4. 拉到Linked Frameworks and Libraries的地方,按下+按鍵

輸入libxml并選擇libxml2,按下Add按鍵

如此便可在工程中看到libxml2.dylib

如同第一張圖中,改選到Build Setting

往下拉找到Search Paths在里面找到Header Search Paths

開(kāi)啟編輯,并按下+然后輸入${SDK_ROOT}/usr/include/libxml2

如此一來(lái)便可在xcode項(xiàng)目中使用libxml了

#include libxml2/libxml/parser.h

#include libxml2/libxml/tree.h

便可include libxml

void CBLibXMLUtility::saveWithLibXML(mapstring,string data,const string fileName)

{

// create xml document

xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");

xmlNodePtr root = xmlNewNode(NULL,BAD_CAST"CloudBoxRoot");

//set root

xmlDocSetRootElement(doc,root);

for(mapstring,string::iterator iter = data.begin(); iter != data.end(); iter++)

{

cout"key:"iter-first" value:"iter-secondendl;

xmlNewTextChild(root, NULL, BAD_CAST (*iter).first.c_str(), BAD_CAST (*iter).second.c_str());

}

//save xml

int nRel = xmlSaveFile(fileName.c_str(),doc);

if (nRel != -1)

{

cout"create a xml:"nRel"bytes"endl;

//DebugLog("Create a xml %d bytes\n",nRel);

}

//release

xmlFreeDoc(doc);

}

這段代碼是一段簡(jiǎn)單的范例,將map數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)保存到xml中。

轉(zhuǎn)載僅供參考,版權(quán)屬于原作者。祝你愉快,滿(mǎn)意請(qǐng)采納哦

iOS開(kāi)發(fā)中 xml 數(shù)據(jù)請(qǐng)求

NSString *soapStr = [NSString stringWithFormat:@"?xml version=\"1.0\" encoding=\"utf-8\"?\

soap:Envelope xmlns:xsi = \"htttp://www.網(wǎng)址.com"\

xmlns:soap = \"http://網(wǎng)址\"\

soap:header\

/soap:header\

soap:Body\

// 這中間基本就是要寫(xiě)的參數(shù),在Body 之間就是參數(shù)

/soap:Body\

/soap:Envelope"];?

NSURL *url=[NSURL URLWithString:@"你自己wsdl文檔中對(duì)應(yīng)的endpoint address"];

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];

// 訪(fǎng)問(wèn)方式[request setHTTPMethod:@"POST"];

// 設(shè)置請(qǐng)求頭(請(qǐng)求頭也可以不設(shè)置,前兩個(gè)設(shè)不設(shè)置都一樣,應(yīng)該默認(rèn)的,但是SOAPAction我怎么都設(shè)置不對(duì),不設(shè)置也可以,干脆不設(shè)置了)

// [request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];//? [request addValue:[NSString stringWithFormat:@"%zd", soapStr.length] forHTTPHeaderField:@"Content-Length"];

//? ? [request addValue:@"nameSpace/methodName" forHTTPHeaderField:@"SOAPAction"];

// body內(nèi)容 [request setHTTPBody:[soapStr dataUsingEncoding:NSUTF8StringEncoding]];

NSURLSession *session = [NSURLSession sharedSession];

NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

NSString *result = [[NSString alloc] initWithData:data? encoding:NSUTF8StringEncoding];

NSLog(@"進(jìn)入成功回調(diào)Session-----結(jié)果:%@----請(qǐng)求地址:%@", result, response.URL);

if (error) {

NSLog(@"Session----失敗----%@", error.localizedDescription);

}

}];

[task resume];

// 傳入一個(gè)字典只有唯一(key - value)的數(shù)組,

// eg: NSArray *array = @[@{@"addr":@"777"},@{@"999":@"666"},@{@"000":@"111"}];

+ (NSString*)convertDicArrayToXML:(NSArray*)arrayandElement:(NSString*)element {

if (array.count=0) {

return nil ;

}

NSMutableString *mString = [NSMutableString string];

[mStringappendFormat:@"%@ xmlns=\"\"",element];

for (NSDictionary*dic in array) {

? ? [mStringappendFormat:@"%@", dic.allKeys.firstObject];

? ? [mStringappendFormat:@"%@", dic.allValues.firstObject];

? ? [mStringappendFormat:@"/%@\t\t", dic.allKeys.firstObject];

}

[mStringappendFormat:@"/%@", element];

return mString;

}

+ ( void )xmlRequestPOSTWithSoapBody:(NSString*)bodyStringandElement:(NSString*)elementsuccess:( void (^)( id responseObject))successfailure:( void (^)(NSError*error))failure {

//? ? DLog(@"....bodyString = %@", bodyString);

NSString*soapStr = [NSString stringWithFormat:

? ? ? ? ? ? ? ? ? ? @"?xml version=\"1.0\" encoding=\"utf-8\"?\

? ? ? ? ? ? ? ? ? ? soap:Envelope xmlns:xsi=\"\" xmlns:xsd=\"\"\

xmlns:soap=\"\"\

soap:Body%@/soap:Body\

/soap:Envelope",bodyString];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

// 設(shè)置請(qǐng)求超時(shí)時(shí)間

manager.requestSerializer.timeoutInterval = 15;

// 返回NSData

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

// 設(shè)置請(qǐng)求頭,也可以不設(shè)置

[manager.requestSerializer setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

[manager.requestSerializer setValue:[NSString stringWithFormat:@"%zd", soapStr.length] forHTTPHeaderField:@"Content-Length"];

[manager.requestSerializer setValue:[NSString stringWithFormat:@"",element] forHTTPHeaderField:@"SOAPAction"];

// 設(shè)置HTTPBody

[manager.requestSerializersetQueryStringSerializationWithBlock:^NSString*(NSURLRequest*request,NSDictionary*parameters,NSError* __autoreleasing *error) {

? ? return soapStr;

}];

[managerPOST:webService_Urlparameters:soapStrprogress:^(NSProgress* _Nonnull uploadProgress) {

}success:^(NSURLSessionDataTask* _Nonnull task, id ? _Nullable responseObject) {

? ? //DLog(@"responseObject = %@", responseObject);

? ? // 把返回的二進(jìn)制數(shù)據(jù)轉(zhuǎn)為字符串

? ? NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

? // DLog(@"result = %@", result);

? ? // 利用正則表達(dá)式取出之間的字符串

? ? NSString*resultString = [NSStringstringWithFormat:@"(?=%@Result\\).*(?=/%@Result)",element,element];//@"(?=return\\).*(?=/return)"

? ? NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:resultString? options:NSRegularExpressionCaseInsensitive error: nil ];

? ? NSDictionary *dict = [NSDictionary dictionary]; ? ?? for (NSTextCheckingResult*checkingResult in [regularmatchesInString:resultoptions:0range:NSMakeRange(0, result.length)]) {

? ? ? ? // 得到字典

? ? ? ? dict = [NSJSONSerialization JSONObjectWithData:[[result substringWithRange:checkingResult.range] dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableLeaves error: nil ];

? ? }

? ? if (success) {

? ? ? ? success(dict);

? ? }

? // DLog(@"dic = %@", dict);

}failure:^(NSURLSessionDataTask* _Nullable task,NSError* _Nonnull error) {

? ? DLog(@"error = %@", error);

? ? if (failure) {

? ? ? ? failure(error);

? ? }

}];

}

調(diào)用一下:

+ ( void )mallListWithType:(NSString * _Nullable )type

? ? ? ? ? ? success:( void (^ _Nullable )( id _Nullable responseObject))success

? ? ? ? ? ? failure:( void (^ _Nullable )(NSString* _Nullable strError))failure {

NSString *element = @"ZHWS_GetActivityMallAdList";

NSArray*bodyArray =@[

? ? @{@"Type":type}

];

NSString*bodyString = [ self convertDicArrayToXML:bodyArrayandElement:element];

[ self xmlRequestPOSTWithSoapBody:bodyStringandElement:elementsuccess:^( id responseObject) {

? ? DLog(@"... 活動(dòng)相關(guān)、商場(chǎng)廣告、廣告列表 = %@", responseObject);

? ? if (responseObject) {

? ? ? ? success(responseObject);

? ? }

}failure:^(NSError*error) {

? ? if (error) {

? ? ? ? //failure(error.mj_JSONString);

? ? }

}];

}

近期項(xiàng)目剛好用到這個(gè),之前也沒(méi)有用過(guò),所以順手就記錄一下。如有錯(cuò)誤,看到的小伙伴請(qǐng)指正。

參考鏈接:

ios上如何解析這樣的xml

最受歡迎的XML分析器簡(jiǎn)介:

iPhone最流行的XML解析器,以及每個(gè)一簡(jiǎn)要介紹:

? NSXMLParser是一個(gè)SAX解析器SDK中包含的iPhone默認(rèn)的。 這是寫(xiě)在Objective - C和使用非常簡(jiǎn)單,但也許沒(méi)有那么容易,因?yàn)镈OM模型。

? libxml2的是一個(gè)開(kāi)放源碼庫(kù),包括iPhone SDK的默認(rèn)情況下使用。 這是一個(gè)基于C的API,所以使用起來(lái)可能不如NSXML方便。 該庫(kù)同時(shí)支持DOM和SAX處理。 該處理器的libxml2的SAX特別的酷,因?yàn)樗幸粋€(gè)能夠解析它的獨(dú)特功能正在讀取數(shù)據(jù)。 例如,你可以從網(wǎng)絡(luò)上閱讀大量的XML文檔并顯示數(shù)據(jù),您正在閱讀它給用戶(hù),而你還在下載。

? TBXML是一個(gè)輕量級(jí)的DOM XML解析器設(shè)計(jì)得盡可能快,而資源消耗少的內(nèi)存。 它節(jié)省了驗(yàn)證時(shí)間不執(zhí)行,不支持XPath和由被只讀 - 即你可以閱讀它的XML,但是你不能再修改XML和寫(xiě)回來(lái)。

? TouchXML是NSXML風(fēng)格的DOM的XML解析器的iPhone。 TBXML一樣,它也是只讀的,但它不像TBXML支持XPath。

? KissXML是另一個(gè)NSSXML風(fēng)格的DOM XML解析器的iPhone,其實(shí)TouchXML的基礎(chǔ)上。 主要區(qū)別是KissXML還支持編輯和編寫(xiě)XML以及閱讀。

? TinyXML的是一個(gè)小型的C -基于DOM的XML解析器頭只包含4個(gè)C文件和兩個(gè)。 它同時(shí)支持讀取和編寫(xiě)XML文件,但它不支持自己的XPath。 但是,您可以使用相關(guān)的庫(kù) - 該TinyXPath - 。

? GDataXML是另一個(gè)NSXML風(fēng)格的DOM XML解析器的iPhone,谷歌開(kāi)發(fā)作為圖書(shū)館的一部分,他們的Objective - C的客戶(hù)端。 短短的m文件和一個(gè)頭組成,它同時(shí)支持閱讀和編寫(xiě)XML文檔和XPath查詢(xún)。

112、 ios的xml解析的原理是什么,

首先說(shuō)一下,在IOS中XML解析和在Android中的SAX或者Pull解析差別不大,都是基于事件的解析方式。

首先,定義一個(gè)對(duì)象來(lái)表示XML的文檔結(jié)構(gòu)

XMLElement.h

#import Foundation/Foundation.h

@interface XMLElement : NSObject

// 標(biāo)簽名稱(chēng)

@property (nonatomic,strong) NSString *name;

// 標(biāo)簽的文本(注意在上一級(jí)標(biāo)簽和下一級(jí)標(biāo)簽之間室友文本的)

@property (nonatomic,strong) NSString *text;

// 標(biāo)簽的屬性

@property (nonatomic,strong) NSDictionary *attributes;

// 子標(biāo)簽集合

@property (nonatomic,strong) NSMutableArray *subElements;

// 上一級(jí)標(biāo)簽

@property (nonatomic,strong) XMLElement *parent;

@end

XMLElement.m

#import "XMLElement.h"

@implementation XMLElement

@synthesize name,text,attributes,subElements,parent;

-(NSMutableArray *) subElements

{

if(subElements == nil){

subElements = [[NSMutableArray alloc]init];

}

return subElements;

}

@end

XML文件的內(nèi)容放在/Supporting File/的Group下面。名稱(chēng)為person.xml

?xml version="1.0" encoding="UTF-8"?

root

person id="1"

firstNamezhang/firstName

lastNamesansan/lastName

age21/age

/person

person id="2"

firstNameli/firstName

lastNamesisisi/lastName

age31/age

/person

/root

解析的ViewController.h

#import UIKit/UIKit.h

#import "XMLElement.h"

@interface ViewController : UIViewController NSXMLParserDelegate

// 解析器對(duì)象

@property (nonatomic,strong) NSXMLParser *parser;

// 根元素

@property (nonatomic,strong) XMLElement *rootElement;

// 當(dāng)前的元素

@property (nonatomic,strong) XMLElement *currentElementPointer;

@end

解析的ViewController.m

#import "ViewController.h"

#import "UIColor+ColorWithARGB.h"

@interface ViewController ()

@end

@implementation ViewController

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if(self != nil){

self.title = @"XML解析";

}

return self;

}

- (void)viewDidLoad

{

[super viewDidLoad];

self.view.backgroundColor = [UIColor r:0xA5 g:0xA5 b:0x52];

NSString *xmlFilePath = [[NSBundle mainBundle]pathForResource:@"person" ofType:@"xml"];

NSData *data = [[NSData alloc]initWithContentsOfFile:xmlFilePath];

self.parser = [[NSXMLParser alloc]initWithData:data];

self.parser.delegate = self;

if([self.parser parse]){

NSLog(@"The XML is Parsed");

NSMutableString *str = [[NSMutableString alloc]init];

[str appendFormat:@"%@\n",self.rootElement.name];

NSMutableArray *subs = self.rootElement.subElements;

for(int i = 0;i [subs count];i++){

XMLElement *personElement = [subs objectAtIndex:i];

[str appendFormat:@"\tname:%@",personElement.name];

[str appendFormat:@",text:%@\n",personElement.text];

NSArray *subPersonElements = personElement.subElements;

for(int j = 0;j [subPersonElements count];j++){

XMLElement *subElement = [subPersonElements objectAtIndex:j];

[str appendFormat:@"\t\tname:%@",subElement.name];

[str appendFormat:@",text:%@\n",subElement.text];

}

}

NSLog(@"======解析結(jié)果:%@" ,str);

}else{

NSLog(@"Failed to parse the XML");

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

// 文檔開(kāi)始

-(void)parserDidStartDocument:(NSXMLParser *)parser

{

self.rootElement = nil;

self.currentElementPointer = nil;

}

// 文檔結(jié)束

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

self.currentElementPointer = nil;

}

// 元素開(kāi)始

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

if(self.rootElement == nil){

self.rootElement = [[XMLElement alloc]init];

self.currentElementPointer = self.rootElement;

}else{

XMLElement *newElement = [[XMLElement alloc]init];

newElement.parent = self.currentElementPointer;

[self.currentElementPointer.subElements addObject:newElement];

self.currentElementPointer = newElement;

}

self.currentElementPointer.name = elementName;

self.currentElementPointer.attributes = attributeDict;

NSLog(@"name:%@" , elementName);

}

// 元素結(jié)束

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

self.currentElementPointer = self.currentElementPointer.parent;

NSLog(@"end name:%@" , elementName);

}

// 解析文本,會(huì)多次解析,每次只解析1000個(gè)字符,如果多月1000個(gè)就會(huì)多次進(jìn)入這個(gè)方法

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

if([self.currentElementPointer.text length] 0){

self.currentElementPointer.text = [self.currentElementPointer.text stringByAppendingString:string];

}else{

self.currentElementPointer.text = [NSMutableString stringWithString:string];

}

NSLog(@"string:%@" , string);

}

@end

網(wǎng)站名稱(chēng):iosxml開(kāi)發(fā),ios coreml
轉(zhuǎn)載源于:http://chinadenli.net/article16/dsggjgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作搜索引擎優(yōu)化服務(wù)器托管網(wǎng)站制作網(wǎng)站設(shè)計(jì)公司品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)