2010-02-01 45 views
1

我遇到一些使用XML解析器與iPhone SDK的一些性能問題。我試圖直接使用LibXML解析器和NSXMLParser,但我得到了相同的結果。 現在我正在尋找可以提高分析性能的東西。將屬性移動到嵌套元素可以使其更快?iPhone SDK XML解析屬性VS嵌套元素

我有這樣一個XML源文件:

 
<Events> 
<Event Name="Test1" Description="Desc" Cat="Cate" Date="20/01/2010" ImageURL="" /> 

</Events> 

我一定要創建一個嵌套的樹?如folliwing?它是否改善了性能?

 
<Events> 
<Event> 
    <Name>Test1</Name> 
    <Description>A description</Description> 
    <Date>20/01/2010</Date> 
    <ImageURL>http://remoteurl.../foo.png</ImageURL> 
</Event> 
</Events> 

THX很多, 保羅

+0

我發現它可以提高性能。 – SlowTree 2010-02-01 11:49:25

+0

閱讀這篇博客http://codesofa.com/blog/archive/2008/07/23/make-nsxmlparser-your-friend.html我希望它可以幫助你.. – 2011-09-06 10:11:30

回答

1

我不完全明白你的意思。我可能不會正確理解你,但這是我在我的程序中所做的。

假設你有一個這樣的文件:

<document> 

<person> 
    <name>bob</name> 
    <phone>555-5555</phone> 
    <vehicle> 
    <color>blue</color> 
    <type>truck</truck> 
    </vehicle> 
</person> 

<person> 
    <name>jan</name> 
    <phone>444-5555</phone> 
    <vehicle> 
    <color>red</color> 
    <type>car</truck> 
    </vehicle> 
</person> 

</document> 

當你一個人打標籤,讓假設你要創建一個Person對象。因此,您創建該人物對象,並讓其解析人物標記內的xml。通過讓人物對象的新委託來做到這一點。當人員發現關閉人員標籤時,可以重置該人員。我也繼續在原始代表上重新調用相同的方法。我從here得到了這個想法。您也可以跟隨併爲車輛標籤做同樣的事情。我相信你可以理解我現在在駕駛的東西。

之所以我認爲這提高了效率,是不是創造元件的堆疊,也退一步堆棧中的(就像當你看到一個人檢查,看看你的文檔中脫穎而出成爲那個)。我想你可以假設,當你看到一個人標記你在一個人身上,但如果你想在安全的一面檢查是很重要的。這種方式也更加模塊化。我認爲由於字符串減少比較表現會提高。它的代碼也更優雅。

如果這不是你的答案,你可以提供一些細節。感謝和愉快的編碼。