2010-02-01 2 views
1

iphone SDK와 XML 구문 분석기를 사용하면 성능 문제가 발생합니다. LibXML 파서를 직접 사용하고 NSXMLParser를 사용하려고했지만 동일한 결과가있었습니다. 이제 구문 분석 성능을 향상시킬 수있는 무언가를 찾고 있습니다. 속성을 중첩 된 요소로 이동하면 더 빠르게 처리 할 수 ​​있습니까?iPhone SDK XML 구문 분석 특성 VS 중첩 요소

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

</Events> 

내가 중첩 된 트리를 생성해야합니까 :

나는이 같은 XML 소스 파일있어? folliwing과 같은? 성능이 향상 되었습니까? 난 당신이 무슨 뜻인지 전혀 모르겠습니다

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

들으 많은, 파올로

+0

성능을 향상시킬 수있는 것으로 나타났습니다. – SlowTree

+0

이 블로그 읽기 http://codesofa.com/blog/archive/2008/07/23/make-nsxmlparser-your-friend.html 도움이 될 수 있기를 바랍니다. –

답변

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 객체를 생성하고, 당신은 person 태그 안의 xml을 파싱하게 만듭니다. person 객체를 객체의 새로운 위임자로 만들어이 작업을 수행 할 수 있습니다. person 객체가 closing person 태그를 발견하면 delegate를 재설정 할 수 있습니다. 나 또한 앞서 가서 원래의 델리게이트에서 같은 메서드를 다시 호출했습니다. here에서 아이디어를 얻었습니다. 차량 태그에 대해서도 동일한 작업을 수행 할 수 있습니다. 내가 지금 운전하고있는 것을 당신이 이해할 수있을 것이라 확신합니다.

효율성을 향상시키는 이유는 요소 스택을 생성하고 스택에서 다시 스테핑하는 것입니다 (예를 들어, 사용자가 문서의 앞쪽에 있는지 확인할 때와 같이). 나는 당신이 당신이 사람의 태그를 볼 때 당신이 생각할 수 있다고 가정하지만, 당신이 안전 측면에 있고 싶다면 점검하는 것이 중요합니다. 또한이 방법은 모듈 식입니다. 내 생각에 문자열을 줄이면 성능이 향상 될 것이라고 생각합니다. 그것도 코드에 우아합니다.

이것이 다소 답이 아니라면 조금 자세하게 설명해 줄 수 있습니다. 감사와 행복한 코딩.