我們如何才能在NSXmlparser中處理自閉標籤?沒有 開始元素和結束元素 - 是否可以處理以下類型的標籤?在NSXmlParser中處理自閉標籤?
<ITEM NAME/>
<REG Number/>
我們如何才能在NSXmlparser中處理自閉標籤?沒有 開始元素和結束元素 - 是否可以處理以下類型的標籤?在NSXmlParser中處理自閉標籤?
<ITEM NAME/>
<REG Number/>
任何XML解析器,包括的NSXMLParser,要治療這種:
<ITEMNAME/>
相同此XML:
<ITEMNAME></ITEMNAME>
換句話說,只要解析器代碼編寫關心的是,你應該看到解析器調用的元素回調的開始和結束。爲了證明這一點,我把下面的示例XML文件中的:
<top>
<sample1/>
<sample2 attr1="a"/>
</top>
我然後執行以下代碼加載該文件,並對其進行分析:
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"xml"];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:sampleURL];
[parser setDelegate:self];
[parser parse];
我的解析器委託方法被實現爲如下:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
NSLog(@"Received didStartElement callback for tag: %@", elementName);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"Received didEndElement callback for tag: %@", elementName);
}
當我運行這段代碼,我看到下面的控制檯輸出:
2012-01-01 22:24:24.011 SampleXML[10248:707] Received didStartElement callback for tag: top
2012-01-01 22:24:24.012 SampleXML[10248:707] Received didStartElement callback for tag: sample1
2012-01-01 22:24:24.013 SampleXML[10248:707] Received didEndElement callback for tag: sample1
2012-01-01 22:24:24.013 SampleXML[10248:707] Received didStartElement callback for tag: sample2
2012-01-01 22:24:24.015 SampleXML[10248:707] Received didEndElement callback for tag: sample2
2012-01-01 22:24:24.015 SampleXML[10248:707] Received didEndElement callback for tag: top
正如你所看到的,我爲sample1和sample2標籤都得到了didStartElement和didEndElement回調,這就是它應該如何工作的。
parserdidstart和parserdidend元素deleagate方法將被調用爲通常?我檢查過,它不叫.. – nameless 2012-01-02 04:01:54
你確定嗎?我還沒有嘗試過,但它似乎只有'parser:didEndElement:namespaceURI:qualifiedName:'將被調用,因爲'
我相信它是XML 1.0規範的一部分,就任何解析器而言,它們是相同事物的替代形式。我會看看我能否證實這一點。我知道,如果元素具有任何屬性,則必須確保didStartElement被調用。如果不被稱爲不管是什麼,我都會感到驚訝,但是這需要我來驗證一下。 – 2012-01-02 04:09:20
這是結束標記,它將調用NSXMLParser
委託人的didEndElement
。
該標記的發現字符將爲空。
無需任何特殊的邏輯來處理this.v
是正確的,不需要任何特殊的邏輯來處理這個問題。說出找到的人物是空的可能並不完全準確。當使用XML這樣的「空元素」語法時,NSXMLParserDelegate的foundCharacters回調將永遠不會被調用。另外,說「這是結束標記」並不準確 - 這是特殊的XML語法,它既是開始標記又是結束標記的縮寫。 – 2012-01-02 04:40:37
我不得不做出一個XML解析器和我的標籤之一是空的,自我封閉,即
開始和endElement正在..
使用TbXml解析在這你很容易得到這一個 – Ron 2012-01-02 04:19:17