2009-11-28 9 views
0

저는 C++에서 부합하고 유효성을 검사하는 XML 파서를 작성하고 포켓 PC 용으로 경량화하려고합니다. 시작시 XML 구문 분석 및 사용

나는 등 SAX처럼 내 파서 않는 요소에 대해 알리고, 처리 명령, 일부 "이벤트"를 추가하기로 결정

이 이벤트는의 DOM 트리를 구축 파생 클래스에서 촬영

xml.

주로 엔티티 (정의 된 경우 요소, pi 및 주석을 포함 할 수 있음) 및 해당 해상도를 처리 할 때 의문의 여지가 있습니다.

예를 들어 .NET system.xml 파서와 마찬가지로 일부 XMLDocType 객체에 정의 된 일부 XMLEntity를 참조하는 XMLEntityRef 클래스를 만들 수 있습니다.

대부분의 목적을 위해 응용 프로그램은 요소, 해당 내용, 해당 특성 및 해당 값을 알고 있어야합니다. 문자열 만 ... 요소 내용이 cdata로 구성되는지는 신경 쓰지 않습니다. 객체, 엔티티 참조 및/또는 일반 텍스트 ... 속성 값에도 동일하게 적용됩니다.

그래서 내 질문은 다음과 같습니다. 응용 프로그램에 나타나는 각 xml 개체를 전달하고 텍스트 또는 텍스트를 연결하여 결과 속성 값을 빌드하도록 (또는 도우미 클래스를) 보내도록하는 이점은 무엇입니까? 해결 된 엔티티 참조?

설문 조사를 작성한 경우, 애플리케이션에서 cdata 태그 및 XML 파일에있는 위치에 대해 알아야하는지 또는 쉬운 일을하는지 ... 전체 콘텐츠 값을 알고 싶습니다. 문자열을 구성하는 요소에 대해 걱정하지 않고 문자열을 구성 할 수 있습니까?

안부,

답변

1

내가 C의 준수 및 유효성 검증 XML 파서를 구축 ++와 (검증 결코 마음을) 파서 그것은 경량

부합하는 경량 같은 건 없다 만들기 위해 노력하고있어. 부합하는 파서가 되려면 DTD 외부 서브 세트에 들어갈 수있는 모든 것을 이해해야한다. XML 명세가 모든 SGML DTD 크래프트에 무게를 달아 놓았지만, 우리는 지금 그것에 매료되어있다.

응용 프로그램은 CDATA 태그에 대해 알 필요가 및 않는 그들이

일반적으로 XML 파일의 위치 없음. DOM Level 3 LS는 기본적으로 CDATA 섹션을 DOM의 CDATASection 노드에 보관해야하지만 응용 프로그램은 거의 신경 쓰지 않습니다.

( 응용 프로그램들이 있었다 CDATA 섹션을 유지하는 템플릿 시스템이기 때문에 문제는, 그래 다음에 대한 응용 프로그램입니다 경우.주로 기관

하나님 예를 처리 할 때하지만 여전히.)

내 의심이 나타납니다. 엔티티 참조는 완전한 재난입니다. DOM 구현이 DOM Level 3 Core/LS를 따르는 방식으로 지원하는 것은 매우 복잡합니다. 가능하면 피하십시오.

+0

글쎄 ... 가벼운 무게로 일부 구현에서 코드의 차이를 시각화하려고했습니다. Xerces 코드 (io 물건 제외)는 system.xml의 mono.net 구현보다 큽니다. 하지만, 당신이 말한 것처럼, 하나는 완전히 돔 수준 3 호환 파서를 만들 수 있습니다. 음 ... 어떤 종류의 응용 프로그램이 xml 편집기를 제외하고 DOM 구조를 실제로 활용합니까? –

+0

유감스럽게도 XML 문법을 최소한으로 충족시키기 위해서는 대부분의 털이 많은 DTD를 구현해야합니다. SGML에서 쓸데없는 DTD 헛소리를 너무 많이 끌어온 것은 수치스러운 XML입니다. 가벼운 작업을위한 표준 XML 간소화 된 서브 세트, 기본 속성 및 모든 엔티티와 함께 ​​모든 doctype을 삭제하고 루트 요소에서만 네임 스페이스 선언을 허용하는 것이 좋습니다. – bobince

+0

예 ... 가벼운 사양이 있어야합니다 ... 감사합니다. –

1

마우로 H. Leggieri은 일반적으로 XML은 경량 없습니다. JSON을 사용하는 것이 더 좋습니다.

+0

예, C/C++ 용 json 라이브러리가 "너무 좋아"하기 때문에 ... 웹 개발 중 10000 %가 동의합니다. 다른 과목? 음,별로. – elcuco

+0

도서관에 관해 누가 말했습니까? 그는 어쨌든 자신의 권리를 원합니다. 데이터 이외에 데이터입니다. 웹 개발 또는 "기타 주제". XML과 JSON은 전송할 데이터를 공식적으로 정의하는 방법 일뿐입니다. –

1

파서를 만들 때 응용 프로그램에서 XML을 사용하는 방법에 대해 아무 것도 예상하지 않고 최대한의 유연성을 제공하기 위해 각 XML 노드에 대해 가장 세부적인 수준의 데이터를 제공해야한다고 생각하지 않습니다. 애플리케이션을 소비하는 데 더 많은 작업이 필요할 수 있지만 필요한 모든 작업을 수행 할 수 있습니다. 행운을 빕니다.

+0

고마워요, 빌. –