Атрибут синтаксического анализа iPhone SDK XML VS Вложенные элементы - PullRequest
1 голос
/ 01 февраля 2010

У меня возникла проблема с производительностью при использовании анализатора XML с iphone SDK. Я пытался использовать LibXML-парсер напрямую и NSXMLParser, но у меня были те же результаты. Теперь я ищу что-то, что может улучшить производительность парсинга. Перемещение атрибутов во вложенные элементы может сделать это быстрее?

Я получил исходный XML-файл, подобный этому:

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

</Events>

Нужно ли создавать вложенное дерево? Такие, как следующие? Улучшает ли это производительность?

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

Большое спасибо, Paolo

1 Ответ

1 голос
/ 09 февраля 2010

Я не совсем уверен, что вы имеете в виду. Возможно, я вас не правильно понимаю, но вот что я сделал в своей программе.

Предположим, у вас есть такой файл:

<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 внутри тегов person. Вы делаете это, делая объект person новым делегатом объекта. Когда объект person обнаруживает закрывающий тег person, он может сбросить делегат. Я также пошел дальше и повторно вызвал тот же метод для исходного делегата. Я получил эту идею от здесь . Вы также можете следить и делать то же самое для тега транспортного средства. Я уверен, что вы можете понять, на чем я сейчас езжу.

Причина, по которой я думаю, что это повышает эффективность, заключается в том, что вместо создания стека элементов и возврата в стек (например, когда вы видите человека, проверяющего, находится ли ваш документ в этом документе). Я полагаю, что вы можете просто предположить, когда видите тег человека, который принадлежит вам, но если вы хотите быть в безопасности, проверка важна. Также этот способ является более модульным. Я думаю, что из-за сокращения строк на производительность улучшится. Его также более элегантно для кода.

Если это не тот ответ, который вы ищете, не могли бы вы рассказать немного подробнее. Спасибо и счастливого кодирования.

...