如何使用目标 c 从 xml 信封中提取 xml 肥皂体?

Posted

技术标签:

【中文标题】如何使用目标 c 从 xml 信封中提取 xml 肥皂体?【英文标题】:How to extract xml soap body from xml envelope using objective c? 【发布时间】:2018-02-01 05:18:30 【问题描述】:

如何使用objective c从xml信封中提取xml皂体?

<soap:Envelope xmlns:c="http:************************" 
xmlns:soap="http://********************" 
xmlns:n1="http://**************" xmlns:n2="http:***********">
<soap:Header>
</soap:Header>
<soap:Body>
    <n1:GetDeviceConfiguration id="o0" c:root="1">
        <n1:request>
            <n2:Header>
                <n2:DeviceName>Tester Phone</n2:DeviceName>
                <n2:DeviceIpAddress>***********</n2:DeviceIpAddress>
                <n2:AppVersion>1.2</n2:AppVersion>
                <n2:RequestTime>2018-01-10T10:10:27</n2:RequestTime>
                <n2:MessageId>******************</n2:MessageId>
            </n2:Header>
            <n2:Body>
                <n2:LastUpdate>2017-08-06T15:34:00</n2:LastUpdate>
            </n2:Body>
        </n1:request>
    </n1:GetDeviceConfiguration>
</soap:Body>

我想从这个 xml 中提取肥皂:使用目标 C 的身体。

【问题讨论】:

【参考方案1】:

您可以使用 XMLParser 提取肥皂主体。

首先将你的xml转换成NSData,然后调用解析器进行解析。

    //converting into NSData
    NSData* data = [theXML dataUsingEncoding:NSUTF8StringEncoding];

    //initiate  NSXMLParser with this data
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];

    //setting delegate
    parser.delegate = self;

    //call the method to parse
    BOOL result = parser.parse;

    parser.shouldResolveExternalEntities = true;

现在,您需要在您的类中实现 NSXMLParser 委托。

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict 
currentElement = elementName;
NSLog(@"CurrentElementl: [%@]",elementName);

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
NSLog(@"foundCharacters: [%@]",string);

你会在你的xml的key下找到值。

不要忘记将 NSXMLParserDelegate 添加到您的类接口中。

【讨论】:

以上是关于如何使用目标 c 从 xml 信封中提取 xml 肥皂体?的主要内容,如果未能解决你的问题,请参考以下文章

删除标题标签,包括信封,正文等

ejabberd:如何从 xml 元素中提取数据

C# 生成没有 XML 根元素的 SOAP 信封

如何使用 PHP 从 XML“链接”标签中提取“href”属性?

如何在 PL/SQL 中使用 FOR LOOP 从具有相同标签的 xml clob 中提取值

如何使用 PL/SQL 从 XML 文件中提取数据