문제

베타 웹 서비스 API를 소비하는 공기 응용 프로그램을 작성합니다. 때때로이 apireturn은 저에게 xml 객체를 만들 때 오류가 발생합니다.

내가하고있는 일은 XML이 나쁘면 결과를 시도/잡아 내고 전체 응답을 무시하는 것입니다. 그러나 기형 노드를 무시할 수 있습니다.

예를 들어:

<result>
  <Song>
    <location>http://www.anyurl.com/audio/loftparty092108_pt4.mp3</location>
    <title>Phonte party @ The Loft, 9/21/08 (pt. 4)</title>
    <artist>Statik, Jahsonic &amp; Stylus        <artist>Statik, Jahsonic &amp; Stylusre />
  </Song>
</result>

그 태그가 보이십니까? 내가 그런 무언가를 할 수 있다면, 나는 전체 노래를 건너 뛰고 다음 노래를 얻고 싶습니다.

이것을 달성 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

  1. 웹 서비스 제공 업체에 쓰십시오. 기름변 XML에 대해 이야기하십시오. 그들은 단지 그것을 고칠 수 있습니다.
  2. 기형 XML이 전달되면 Flex의 기본 XML 디코더가 손실되어 던져집니다.
  3. 가공을 시도하려면 자신만의 디코더를 굴립니다. 참조 xmlDecode 의 멤버이다 HTTPService.

다른 팁

아름다운 수프 이를 수행하지만 파이썬으로 작성되었습니다. 물론 항상 소스를 파고 들고 그들이 어떻게 구현했는지 볼 수 있습니다.

오류 클래스 수가 작 으면 XML을 사전 프로세스하여 오류를 제거한 다음 파서에 건네주십시오. 문제가 해결되면 해결 방법을 쉽게 제거 할 수 있습니다. 위의 경우 파일을 텍스트로로드하고 중복 태그가있는 노드를 찾은 다음 XML 텍스트에서 전체 노드를 제거합니다.

또는 웹 서비스 제공 업체에 알리고 기다릴 수 있습니다. 만약 그들이 해식 XML을 반환하는 경우 거의 모든 파서가 질식하고 곧 수정해야 할 인센티브가 있어야합니다.

아니요, 일반적인 XML 파서가있는 오르플 폼 XML 문서의 일부를 무시할 수 없습니다. 플렉스 컴파일러에게 구문 오류를 무시하고 코더가 실제로 무엇을 의미하는지 파악하도록 요청하는 것과 같습니다. 기형이 무엇인지, 무시할 수있는 것을 추론하려는 자신의 파서를 작성해야합니다.

솔직히, 나쁜 XML을 보내는 웹 서비스, 심지어 베타 버전은 신뢰할 수 없습니다. 프로그램 클래스를 사용하는 대신 XML "직접"을 작곡하고 있음을 의미합니다. 그렇게하는 사람은 다른 많은 오류, 특히 회귀를 만들 수 있습니다. 당신의 시간은 그들에게 의존하기에는 너무 귀중합니다.

건배

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top