문제

C ++에서 XML 파서를 준수하고 검증하고 포켓 PC에서 사용하기 위해 가벼운 체중을 만들려고 노력하고 있습니다.

처음에 나는 SAX처럼 구문 분석기에 "이벤트"를 추가하기로 결정하고 요소, 처리 지침 등에 대해 알리기로 결정했습니다.

이 이벤트는 XML의 DOM 트리를 구축하는 파생 클래스에 의해 가져옵니다.

주로 엔티티 (정의 된 경우 내부의 요소, PI 및 주석을 포함 할 수 있음) 및 해상도를 처리하려고 할 때의 의심이 나타납니다.

예를 들어, .NET System.xml Parser와 같은 일부 XMLDocType 객체에서 정의 된 XMLENTITY를 지칭하는 XMLENTITYREF 클래스를 만들 수 있습니다.

내가 아는 바와 같이, 대부분의 목적을 위해 응용 프로그램은 요소, 내용, 해당 속성 및 해당 값을 알아야합니다 ... 문자열 만 ... CDATA 객체, 엔터티 참조에 의해 요소 컨텐츠가 형성되는지는 신경 쓰지 않습니다. 및/또는 일반 텍스트 ... 동일한 값에 적용됩니다.

따라서 내 질문은 다음과 같습니다. 각 XML 객체가 나타나는대로 응용 프로그램에 전달하고 (또는 도우미 클래스) 텍스트와 해결 된 엔티티 참조를 연결하여 결과 속성의 값을 구축 할 수있는 이점은 무엇입니까?

설문 조사를하는 경우 답변하십시오 : 응용 프로그램은 CDATA 태그와 XML 파일에 위치한 위치에 대해 알아야합니까, 아니면 쉽게 할 수있게 해줍니다 ... 요소의 전체 콘텐츠 값을 알고 싶습니다. 그것이 어떻게 만들어 지는지 걱정하지 않고 문자열?

안부, Mauro H. Leggieri

도움이 되었습니까?

해결책

C ++에서 XML 파서를 준수하고 검증하고 가벼운 중량으로 만들려고 노력하고 있습니다.

가벼운 웨이트 준수 (신경 쓰지 않는) 파서와 같은 것은 없습니다. 순응 파서가 되려면 DTD 외부 하위 집합으로 갈 수있는 모든 것들을 이해해야합니다. XML 사양이 모든 SGML DTD CRUD와 무게를 측정 한 것은 부끄러운 일이지만 지금은 그에 고착되어 있습니다.

응용 프로그램은 CDATA 태그와 XML 파일의 위치에 대해 알아야합니까?

일반적으로 아니요. DOM Level 3 LS는 CDATA 섹션을 기본적으로 DOM에 CDATASECTION 노드를 유지하도록 요구하지만 응용 프로그램은 거의 없습니다.

(질문이 있다면 나의 그런 다음 응용 프로그램은 그렇습니다 나의 응용 프로그램은 CDATA 섹션을 유지하는 템플릿 시스템입니다. 그러나 여전히.)

주로 엔티티를 처리하려고 할 때 내 의심이 나타납니다

신 예. 엔티티 참조는 총 재난입니다. DOM 구현을 수행하는 DOM 레벨 3 코어/LS를 준수하는 방식으로이를 지원하는 것은 매우 복잡합니다. 가능하다면 피하십시오.

다른 팁

일반적으로 XML은 가벼운 무게가 아닙니다. 당신은 JSON과 더 나은 것입니다.

파서를 구축 할 때 응용 프로그램이 XML을 소비하는 방법에 대해 아무것도 추정하지 말고, 각 XML 노드에 대해 가장 세분화 된 수준의 데이터를 제공하여 최대의 유연성을 제공합니다. 이것은 응용 프로그램 소비에 대한 더 많은 작업이 필요할 수 있지만 필요한 모든 것을 달성 할 수 있습니다. 행운을 빕니다.

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