GDataXMLNode——XML处理

GDataXMLNode是Google提供的用于XML数据处理的类集。该类集对libxml2-DOM处理方式进行了封装能对较小或中等的XML文档进行读写操作且支持XPath语法。

获得GDataXMLNode.h和GDataXMLNode.m文件,进行如下操作将文件导入到Xcode的工程中:

    1. 将GDataXMLNode.h/m文件添加到工程中;

    2. 向工程中增加“libxml2.dylib”库;

    3. 在工程的“Build Settings”页中找到“Header Search Path”项,添加“/usr/include/libxml2”到其路径中

添加“GDataXMLNode.h”文件到任一头文件中,如工程能编译通过,则说明GDataXMLNode添加成功。


以生成一段SOAP请求为例,展示该类集的使用。

要生成的SOAP请求:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.example.com/mobile/2010">
	<soap:Body>
		<getProductAd/>
	</soap:Body>
</soap:Envelope>

使用的代码:

     //SOAP Envelope
    GDataXMLElement *envelope = [GDataXMLElement elementWithName:@"SOAP-ENV:Envelope"];
    
    GDataXMLNode *soapNS = [GDataXMLNode namespaceWithName:@"SOAP-ENV" stringValue:@"http://schemas.xmlsoap.org/soap/envelope/"];
    GDataXMLNode *xsiNS = [GDataXMLNode namespaceWithName:@"xsi" stringValue:@"http://www.w3.org/2001/XMLSchema-instance"];
    GDataXMLNode *xsdNS = [GDataXMLNode namespaceWithName:@"xsd" stringValue:@"http://www.w3.org/2001/XMLSchema"];
    GDataXMLNode *defaultNS = [GDataXMLNode namespaceWithName:@"" stringValue:@"http://www.example/mobile/2010"];
    
    NSArray *namespaces = [NSArray arrayWithObjects:xsiNS, xsdNS, soapNS, defaultNS, nil];
    [envelope setNamespaces:namespaces];
    
    //SOAP Body
    GDataXMLElement *body = [GDataXMLElement elementWithName:@"SOAP-ENV:Body"];
    
    //SOAP Value
    GDataXMLElement *value = [GDataXMLElement elementWithName:@"getProductAd"];
    [body addChild:value];
    
    [envelope addChild:body];
    
    //SOAP Document
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithRootElement:envelope];
    [doc setCharacterEncoding:@"utf-8"];
    
    NSLog(@"doc = %@", [NSString stringWithCString:(const char *)[[doc XMLData] bytes] encoding:NSUTF8StringEncoding]);

你可能感兴趣的:(xml,header,xcode,SOAP,encoding,NameSpaces)