XML解析
发布时间:2020-12-16 05:43:22 所属栏目:百科 来源:网络整理
导读:在IOS中解析XML,本文为大家介绍怎么使用NSXMLParser解析XML。 XML源文件 Main.xml ?xml version="1.0" encoding="UTF-8"? tabmenus tabmenu tag = "0" icon = "tab_investment" icon_select = "tab_investment_select" title = "tab_bar_investment" / tabm
在IOS中解析XML,本文为大家介绍怎么使用NSXMLParser解析XML。 XML源文件Main.xml <?xml version="1.0" encoding="UTF-8"?>
<tabmenus>
<tabmenu tag="0" icon="tab_investment" icon_select="tab_investment_select" title="tab_bar_investment"/>
<tabmenu tag="1" icon="tab_my" icon_select="tab_my_select" title="tab_bar_my" />
</tabmenus>
Object-C解析XCTest测试 //
// XMLTests.m
// XML解析
//
// Created by yangjun on 15/10/9.
// Copyright ? 2015年 六月. All rights reserved.
//
#import <XCTest/XCTest.h>
@interface XMLTests : XCTestCase <NSXMLParserDelegate>
{
NSXMLParser *_parser;
}
@end
@implementation XMLTests
- (void)setUp {
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Main" withExtension:@"xml"];
_parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
_parser.delegate = self;
}
- (void)testExample {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
[_parser parse];// 解析xml
}
#pragma mark - NSXMLParserDelegate
#pragma mark 解析开始
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@"%@",NSStringFromSelector(_cmd));
}
#pragma mark 解析结束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"%@",NSStringFromSelector(_cmd));
[parser abortParsing];// 停止解析
}
#pragma mark 解析出错
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{
NSLog(@"解析错误: %@",parseError.localizedDescription);
}
#pragma mark 解析器每次在XML中找到新的元素时,会调用该方法
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
NSLog(@"%@ - %@ - %@ - %@",elementName,namespaceURI,qName,attributeDict);
}
@end
输出 2015-10-09 16:03:15.933 XML解析[4099:319229] parserDidStartDocument:
2015-10-09 16:03:15.933 XML解析[4099:319229] tabmenus - (null) - (null) - {
}
2015-10-09 16:03:15.933 XML解析[4099:319229] tabmenu - (null) - (null) - {
icon = "tab_investment";
"icon_select" = "tab_investment_select";
tag = 0;
title = "tab_bar_investment";
}
2015-10-09 16:03:15.933 XML解析[4099:319229] tabmenu - (null) - (null) - {
icon = "tab_my";
"icon_select" = "tab_my_select";
tag = 1;
title = "tab_bar_my";
}
2015-10-09 16:03:15.934 XML解析[4099:319229] parserDidEndDocument:
Swift解析XCTest测试 //
// XMLTest.swift
// XML解析
//
// Created by yangjun on 15/10/9.
// Copyright ? 2015年 六月. All rights reserved.
//
import XCTest
/** xml解析测试*/
class XMLTest: XCTestCase,NSXMLParserDelegate {
var xmlURL : NSURL? ///< xml的存放地址
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
self.xmlURL = NSBundle.mainBundle().URLForResource("Main",withExtension: "xml")
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
if self.xmlURL != nil {
let parser = NSXMLParser.init(contentsOfURL: self.xmlURL!)
parser?.delegate = self;
parser?.parse()
}
}
// MARK: - NSXMLParserDelegate
// MARK: 解析开始
func parserDidStartDocument(parser: NSXMLParser) {
print("parserDidStartDocument:")
}
// MARK: 解析结束
func parserDidEndDocument(parser: NSXMLParser) {
print("parserDidStartDocument:")
}
// MARK: 解析结束
func parser(parser: NSXMLParser,parseErrorOccurred parseError: NSError) {
print("解析错误(parseError.localizedDescription)")
}
// MARK: 解析器每次在XML中找到新的元素时,会调用该方法
func parser(parser: NSXMLParser,didStartElement elementName: String,namespaceURI: String?,qualifiedName qName: String?,attributes attributeDict: [String : String]) {
print("(elementName) - (namespaceURI) - (qName) - (attributeDict)")
}
}
输出: parserDidStartDocument:
tabmenus - nil - nil - [:]
tabmenu - nil - nil - ["title": "tab_bar_investment","icon": "tab_investment","icon_select": "tab_investment_select","tag": "0"]
tabmenu - nil - nil - ["title": "tab_bar_my","icon": "tab_my","icon_select": "tab_my_select","tag": "1"]
parserDidStartDocument:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |