이 문서에서는 ASP에서 XML 데이터를 처리하기 위해 MSXML2.DOMDocument를 사용할 때 주의 사항을 주로 소개합니다. 이 문서에서는 주의가 필요한 친구가 다음을 참조할 수 있도록 합니다.
ASP가 MSXML2.DOMDocument를 사용하여 네트워크에서 xml 파일을 로드하는 경우 로드 메서드를 호출하기 전에 설정에 주의해야 합니다.
다음과 같이 코드 코드를 복사합니다.oXML.setProperty ServerHTTPRequest, true
즉, ServerHTTPRequest 요청이 활성화되면 시스템 오류(-2146697209)가 발생하지 않습니다.
ASP에서 MSXML2.DOMDocument 구성 요소를 사용할 때 다음 4가지 상황에 주의해야 합니다.
다음과 같이 코드 코드를 복사합니다.<%
희미한 oXML, oXMLError, ReturnValue, x
oXML = Server.CreateObject(MSXML2.DOMDocument)로 설정
' DOMDocument가 xml 파일을 비동기적으로 로드할지 동기적으로 로드할지 설정
oXML.async = false'==========A
' 설정 목적: True/False, 서버에 안전한 ServerXMLHTTP 구성 요소를 사용하여 xml 문서를 로드할지 여부를 나타냅니다.
oXML.setProperty ServerHTTPRequest, true'==========B
'HTTP를 통해 네트워크 xml 파일 로드
ReturnValue = oXML.Load(http://localhost/asp/ServerXML.xml)'==========C
'또는 서버의 로컬 xml 파일을 로드합니다.
'ReturnValue = oXML.Load(d:/test.xml)'==========D
' DOMDocument.load의 반환 값을 인쇄합니다.
Response.write 로드 메소드의 결과는 = & ReturnValue & <br>입니다.
%>
첫 번째 경우(빈 문서 로드):
기본적으로 DOMDocument 개체의 async 속성은 TRUE입니다. 이는 개체가 비동기적으로 로드된다는 의미입니다. 그리고 로드할 때 ServerXMLHTTP 구성 요소가 사용되지 않습니다. 즉, 위 코드의 A행과 B행을 주석 처리합니다.
다음과 같이 코드 코드를 복사합니다.'oXML.async = false'===========A
'oXML.setProperty ServerHTTPRequest, true'==========B
이때 로딩이 성공하게 됩니다. ReturnValue는 TRUE입니다. 하지만 DOMDocument에 로드된 XML 문서는 비어 있습니다! 즉, 로드 메소드에서 반환된 TRUE는 표지입니다! 결과는 다음과 같습니다. 프로그래머는 이 경우에 주의해야 합니다! XML은 오류를 보고하지 않고 로드 메서드도 성공을 나타내지만 DOM의 xml 속성은 비어 있습니다.
두 번째 경우(오류 이유: -2146697209):
비동기 특성을 FALSE로 명시적으로 선언하면 XML 문서가 동기적으로 로드됩니다. 그리고 로드할 때 ServerXMLHTTP 구성 요소가 사용되지 않습니다. 즉, 위 코드에서 B행만 주석 처리합니다.
다음과 같이 코드 코드를 복사합니다.oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
그러면 실패를 겪게 될 것입니다! ReturnValue는 False가 됩니다. 오류 이유는 다음과 같습니다. -2146697209 - 필수 리소스에 사용할 수 있는 데이터가 없습니다. 즉, 인터넷에서 XML 리소스를 동기적으로 로드하는 것은 성공하지 못합니다! !
세 번째 경우(허용되지 않음):
비동기 속성이 TRUE이면 XML 문서가 비동기적으로 로드됩니다. 그리고 로드할 때 ServerXMLHTTP 구성 요소를 사용하세요. 즉, 위 코드에서 B행을 활성화합니다. 코드 A행을 주석 처리합니다.
다음과 같이 코드 코드를 복사합니다.'oXML.async = false'===========A
oXML.setProperty ServerHTTPRequest, true'==========B
버그를 신고했습니다! XML 문서를 비동기적으로 로드하기 위해 SXH 구성 요소를 사용하는 것은 허용되지 않습니다. 오류 설명은 다음과 같습니다. -1072897486 - ServerHTTPRequest 속성은 문서를 비동기적으로 로드할 때 사용할 수 없으며 Windows NT 4.0 이상에서만 지원됩니다.
네 번째 경우(올바른 사용):
비동기 특성을 FALSE로 명시적으로 선언하면 XML 문서가 동기적으로 로드됩니다. 그리고 로드할 때 ServerXMLHTTP 구성 요소를 사용하세요. 즉, 위 코드에서 라인 A와 B를 활성화합니다.
다음과 같이 코드 코드를 복사합니다.oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
그게 다야! SXH 구성 요소를 사용하여 XML 문서를 로드하면 인터넷 리소스의 비동기 로드 오류를 수정할 수 있음을 보여줍니다.
요약
로딩 방법 | 사용 여부 ServerXMLHTTP 구성 요소 | 결과 로드 |
| 비동기 로딩 | 사용되지 않음 | 로딩이 성공할 것입니다. 하지만 DOMDocument에 로드된 XML 문서가 비어 있습니다. |
| 동기 로딩 | 사용되지 않음 | 실패를 겪게 됩니다! 오류 이유는 다음과 같습니다. -2146697209 - 필수 리소스에 사용할 수 있는 데이터가 없습니다. |
| 비동기 로딩 | 사용 | 허용되지 않음 |
| 동기 로딩 | 사용 | 정말 성공했다 |