작성자: AngelGavin 출처: CSDN
외국어 및 특수 문자가 포함된 문서를 로드하는 방법은 무엇입니까?
문서에는 다음과 같은 외국 문자가 포함될 수 있습니다.
외국 문자(úóí?)
예를 들어, 粲와 같은 외국 문자 앞에는 이스케이프 시퀀스가 와야 합니다. 외부 문자는 UTF-8로 인코딩되거나 다음과 같이 다른 인코딩으로 지정될 수 있습니다.
외국어 문자(?磲)
이제 XML이 올바르게 로드되었습니다.
다른 문자는 XML에 예약되어 있으므로 다르게 처리해야 합니다. 아래 XML:
이것저것
다음 오류가 발생합니다.
여기에는 공백이 허용되지 않습니다.
0000001행 : 이것저것
위치 0000012: ----------^
여기서 &는 XML 구문 구조의 일부입니다. XML 데이터 소스 내에 배치된 경우에는 &로 해석될 수 없습니다. "엔티티"라는 특수 문자 시퀀스를 바꿔야 합니다.
이것저것
다음 문자에는 해당 엔터티가 필요합니다.
< <
& &
>>
" "
''
따옴표 문자는 마크업에서 속성 값에 대한 구분 기호로 사용되므로 일반적으로 속성 값 내에서 사용할 수 없습니다. 예를 들어, 다음은 오류를 반환합니다.
여기서 작은따옴표는 속성 구분 기호와 속성 값 자체 내에서 모두 사용됩니다. 이 문제를 해결하려면 속성 구분 기호를 큰따옴표로 변경하거나
작은따옴표를 엔터티로 이스케이프할 수 있습니다.
위의 두 메서드 모두 XML 개체 모델의 getAttribute 메서드를 통해 속성 값 John's Stuff를 반환합니다. 마찬가지로 큰따옴표의 경우 엔터티 "를 사용할 수 있습니다.
CDATA 섹션에 텍스트를 배치하여 요소 콘텐츠의 특수 문자를 처리할 수도 있습니다. 올바른 내용은 다음과 같습니다.
이 예에서 XML 개체 모델은 CDATA 노드를 xml 노드의 하위 노드로 표시합니다. 이 노드는
This & that is just "text" content라는 문자열을 반환합니다.
nodeValue로.
Visual Studio 6.0 C++에서 MSXML COM 구성 요소를 사용하는 방법은 무엇입니까?
Visual C++ 6.0에서 MSXML COM 구성 요소를 사용하는 가장 쉬운 방법은 #import 지시문을 사용하는 것입니다
.
애플리케이션에서 사용할 수 있도록 모든 IXML* 인터페이스와 인터페이스 ID를 정의합니다. MSXML 유형 라이브러리 및 헤더 파일(영문)은 INETSDK뿐만 아니라 클래스 IID가 포함된 uuid.lib에서도 사용할 수 있습니다.
XML에서 HTML 엔터티를 사용하는 방법은 무엇입니까?
다음 XML에는 HTML 엔터티가 포함되어 있습니다.
저작권 ? 2000, Microsoft Inc, 모든 권리 보유.
다음 오류가 발생합니다.
정의되지 않은 엔터티 '복사본'에 대한 참조입니다.
라인: 1, 위치: 23, 오류 코드: 0xC00CE002
저작권 ? 2000, ...
----------^
이는 XML에 기본 제공 엔터티가 5개만 있기 때문입니다. 기본 제공 엔터티에 대한 자세한 내용은 외국어 및 특수 문자가 포함된 문서를 어떻게 로드합니까?를 참조하세요. .
HTML 엔터티를 사용하려면 DTD를 사용하여 정의해야 합니다. DTD에 대한 자세한 내용은 W3C XML 권장 사항(영문)을 참조하세요. 이 DTD를 사용하려면 다음과 같이 DOCTYPE 태그에 직접 포함하십시오.
저작권 ? 2000, Microsoft Inc, 모든 권리 보유.
이를 로드하려면 IXMLDOMDocument 인터페이스의 verifyOnParse 속성을 꺼야 합니다. 유효성 검사기 테스트 페이지에 붙여넣고 DTD 유효성 검사를 끈 다음 유효성 검사를 클릭하세요. 문서가 로드되고 유효성 검사기 페이지 끝에 있는 DOM 트리에 저작권 문자가 표시됩니다.
DTD 유효성 검사가 완료되면 매개변수 엔터티인 HTML 엔터티가 다음과 같이 기존 DTD에 포함되어야 합니다.
%HTMLENT;
%HTMLENT;
XML 문서에서 사용할 수 있도록 모든 HTML 엔터티를 정의합니다.
요소 콘텐츠에서 공백 문자를 처리하는 방법은 무엇입니까?
XML DOM에는 요소의 텍스트 콘텐츠에 액세스하는 세 가지 방법이 있습니다.
특성 동작
nodeValue 원본 XML 소스에 지정된 대로 TEXT, CDATA, COMMENT 및 PI 노드의 원본 텍스트 콘텐츠(공백 문자 포함)를 반환합니다. ELEMENT 노드 및 DOCUMENT 자체의 경우 null이 반환됩니다.
데이터 nodeValue와 동일
텍스트 반복은 지정된 하위 트리의 여러 TEXT 및 CDATA 노드를 연결하고 결합된 결과를 반환합니다.
참고: 공백 문자에는 새 줄, 탭 및 공백이 포함됩니다.
nodeValue 속성은 일반적으로 문서가 로드된 방식과 현재 xml:space 범위에 관계없이 원본 문서의 내용을 반환합니다.
text 속성은 지정된 하위 트리의 모든 텍스트를 연결하고 엔터티를 확장합니다. 이는 문서가 로드되는 방식, presentsWhiteSpace 스위치의 현재 상태 및 현재 xml:space 범위와 관련됩니다. 아래를 참조하십시오
.
PreserveWhiteSpace=true | PreserveWhiteSpace=true | PreserveWhiteSpace=false | PreserveWhiteSpace=false |
xml:space=preserve | xml:space=기본 | xml:space=preserve | xml:space=기본 |
보존 보존 | 보존 | 및 | 잘라내기 |
PreserveWhiteSpace = false 문서가 로드될 때
PreserveWhiteSpace=true | PreserveWhiteSpace=true | PreserveWhiteSpace=false PreserveWhiteSpace= | false |
xml:space=preserve | xml:space=기본 | xml:space=preserve | xml:space=기본 |
반 보존 | 반 보존 및 자르기 | 반 보존 | 반 보존 및 자르기 |
여기에서 보존 원본 XML 문서와 정확히 동일한 원본 텍스트 내용, 잘린 의미 앞뒤 공백이 제거됨, 반보존 의미 "중요한 공백 문자"가 보존되고 "중요하지 않은 공백 문자"가 정규화됨을 의미합니다. 중요한 공백 문자는 텍스트 내용 내의 공백 문자입니다. 중요하지 않은 공백 문자는 토큰 사이의 공백 문자입니다. 다음과 같습니다.
n
t제인n
t스미스 n
이 예에서 빨간색은 무시할 수 있는 중요하지 않은 공백 문자인 반면 녹색은 텍스트 내용의 일부이므로 무시할 수 없는 중요한 의미를 갖기 때문에 중요한 공백 문자입니다. 따라서 이 예에서 텍스트 속성은 다음을 반환합니다.
상태 반환 값은 "nt JanentSmith n"으로 유지됩니다.
"JanentSmith"를 유지하고 자릅니다.
세미 예약 "제인 스미스"
"Jane Smith" 절반 보존 및 자르기
"절반 보존"은 중요하지 않은 공백 문자를 정규화합니다. 예를 들어 개행 및 탭 문자는 단일 공백으로 축소됩니다. xml:space 속성과 PreserveWhiteSpace 스위치를 변경하면 텍스트 속성이 그에 따라 다른 값을 반환합니다.
CDATA 및 xml:space="preserve" 하위 트리 경계
다음 예에서는 CDATA 노드 또는 "예약된" 노드의 내용이 중요하지 않은 공백 문자 정규화에 참여하지 않기 때문에 연결됩니다. 예를 들어:
N
t 제인 n
t 스미스 ]>n
이 경우 CDATA 노드 내부의 공백 문자는 더 이상 "중요하지 않은" 공백 문자와 "병합"되지 않으며 잘리지 않습니다. 따라서 "절반 보존 및 잘림" 사례는 다음을 반환합니다.
"Jane Smith"
여기서는 CDATA 노드의 내용에 관계없이 태그와 태그 사이의 중요하지 않은 공백 문자가 포함됩니다. CDATA를 다음으로 바꾸면 동일한 결과가 반환됩니다.
Smith
DTD의 일부로 로드 및 구문 분석되고 DOCTYPE 노드 아래에 표시되는
특수 엔터티입니다
.xml:space 범위를 가질 필요는 없습니다. 예를 들어:
제인n
tn
">
]>
&계집애;
PreserveWhiteSpace=false(DOCTYPE 태그 범위에서)라고 가정하면 엔터티를 구문 분석할 때 중요하지 않은 공백 문자가 손실됩니다. 엔터티에는 공백 문자 노드가 없습니다. 트리는 다음과 같습니다:
DOCTYPE foo
개체: 제인
요소: 직원
요소: 이름
텍스트: 제인
요소: 제목
텍스트>:소프트웨어 설계 엔지니어
요소: foo
속성: xml:space="보존"
개체참조: Jane
DOCTYPE 내부의 ENTITY 노드 아래에 노출된 DOM 트리에는 WHITESPACE 노드가 포함되어 있지 않습니다. 이는 엔터티 참조가 xml:space="preserve" 범위 내에 있더라도 ENTITYREF 노드의 하위 노드에도 WHITESPACE 노드가 없음을 의미합니다.
특정 문서에서 참조된 ENTITY의 각 인스턴스는 일반적으로 동일한 트리를 갖습니다.
엔터티가 공백 문자를 절대적으로 유지해야 하는 경우 자체 xml:space 속성을 내부적으로 지정해야 하거나 문서 presentsWhiteSpace 스위치를 true로 설정해야 합니다.
속성에서 공백 문자를 처리하는 방법은 무엇입니까?
속성 값에 액세스하는 방법에는 여러 가지가 있습니다. IXMLDOMAttribute 인터페이스에는 Microsoft 확장으로서의 nodeValue 및 텍스트 속성에 해당하는 nodeValue 속성이 있습니다. 이러한 속성은 다음을 반환합니다. 속성이 반환하는 텍스트
attrNode.node값
attr노드.값
getAttribute("name")은 원본 문서와 정확히 동일한 콘텐츠(및 확장 엔터티)를 반환합니다.
attrNode.nodeTypedValue Null
attrNode.text는 선행 및 후행 공백 문자가 잘렸다는 점을 제외하면 nodeValue와 동일합니다.
"XML 언어" 사양은 XML 응용 프로그램에 대한 다음 동작을 정의합니다. 속성 유형 반환된 텍스트 CDATA ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, 열거
반정규화 전체 정규화
여기서 반정규화는 새 줄과 탭 문자의 변환을 나타냅니다. 공간이지만 여러 공간이 하나의 공간으로 변질되지는 않습니다.