XML 입문 의 흔 한 문제(4)

XML 개체 모델 에서 공백 문 자 를 어떻게 처리 합 니까?어떤 경우 XML 개체 모델 은 공백 문 자 를 포함 하 는 TEXT 노드 를 표시 합 니 다.공백 문자 가 잘 리 면 대부분 혼란 을 가 져 올 수 있 습 니 다.예 를 들 어 다음 XML 예:   ]>  Smith  John 다음 트 리 생 성:   Processing Instruction: xml  DocType: person  ELEMENT: person  TEXT:   ELEMENT: lastname  TEXT:   ELEMENT: firstname  TEXT:  이름과 성씨 양쪽 은 공백 문자 만 포 함 된 TEXT 노드 입 니 다.'person'요소 의 내용 모델 은 MIXED 이기 때 문 입 니 다.그것 은\#PCDATA 키 워드 를 포함 합 니 다.MIXED 콘 텐 츠 모델 지정 요소 사이 에 텍스트 가 존재 할 수 있 습 니 다.따라서 아래 의 내용 도 정확 하 다. My last name is Smith and my first name is John 결 과 는 아래 트 리 와 유사 합 니 다.   ELEMENT: person  TEXT: My last name is  ELEMENT: lastname  TEXT: and my first name is  ELEMENT: firstname  TEXT:  단어'is'이후 와 이전의 공백 문자,그리고 그 다음 과 단어'and'이전의 공백 문자 가 없다 면 문장 은 이해 할 수 없다.따라서 MIXED 콘 텐 츠 모델 에 있어 문자 조합,공백 문자 와 요 소 는 모두 관련 이 있다.비 MIXED 콘 텐 츠 모델 로 서 는 그렇지 않다.공백 문자 만 있 는 TEXT 노드 를 없 애 려 면"person"요소 설명 에서\#PCDATA 키 워드 를 삭제 하 십시오.결 과 는 아래 의 선명 한 트 리 입 니 다. Processing instruction:xml DocType:person ELEMENT:person ELEMENT:lastname ELEMENT:firstname XML 성명 은 무엇 을 합 니까?XML 성명 은 XML 문서 의 맨 위 에 있어 야 합 니 다.다음 항목 을 지정 합 니 다.이 문 서 는 XML 문서 입 니 다.MIME 형식 을 잃 어 버 렸 거나 지정 하지 않 았 을 때 MIME 탐측 기 는 파일 이 형식 text/xml 인지 확인 할 수 있 습 니 다.문 서 는 XML 1.0 규범 에 부합 한다.앞으로 XML 에 다른 버 전이 있 을 때 이 점 이 중요 합 니 다.문서 문자 인 코딩.인 코딩 속성 은 선택 할 수 있 습 니 다.기본 값 은 UTF-8 입 니 다.메모:XML 성명 은 XML 문서 의 첫 줄 에 있어 야 하기 때문에 아래 XML 파일:아래 의 분석 오류 가 발생 합 니 다:잘못된 xml 성명 입 니 다.행 0000002:     위치.  0000007:---^주의:XML 성명 은 선택 할 수 있 습 니 다.상단 에 주석 이나 처리 명령 을 지정 해 야 한다 면 XML 성명 을 넣 지 마 십시오.그러나 기본 인 코딩 은 UTF-8 이 될 것 이다.어떻게 읽 을 수 있 는 형식 으로 나의 XML 문 서 를 인쇄 합 니까?DOM 으로 0 부터 문 서 를 구성 하여 XML 파일 을 만 들 때 모든 내용 이 한 줄 에 있 고 서로 빈 칸 이 없습니다.이것 은 묵인 적 인 행위 다.인터넷 익스플로러 5 의 기본 XSL 스타일 시트 를 구성 하여 XML 문 서 를 읽 을 수 있 는 형식 으로 표시 하고 인쇄 합 니 다.예 를 들 어 IE5 가 설치 되 어 있다 면 nospace.xml 파일 을 보십시오.브 라 우 저 에 아래 트 리 를 표시 해 야 합 니 다.-XYZ 12.56 은 XML 에 공백 문 자 를 삽입 하지 않 았 습 니 다.읽 을 수 있 는 XML 을 인쇄 하 는 것 은 매우 재 미 있 습 니 다.특히 서로 다른 유형의 콘 텐 츠 모델 을 정의 하 는 DTD 가 있 을 때.예 를 들 어 혼합 콘 텐 츠 모델(\#PCDATA)에 빈 칸 을 삽입 할 수 없습니다.내용 의 의 미 를 바 꿀 수 있 기 때 문 입 니 다.예 를 들 어 다음 XML:Elephant 를 고려 하 십시오.이것 은 출력 하지 않 는 것 이 좋 습 니 다.E lephant 는 단어 경계 가 정확 하지 않 기 때 문 입 니 다.이 모든 것 이 자동화 인쇄 를 문제 로 만 들 었 다.읽 을 수 있 는 XML 을 인쇄 할 필요 가 없다 면 DOM 을 사용 하여 적당 한 위치 에 공백 문 자 를 텍스트 노드 로 삽입 할 수 있 습 니 다.어떻게 DTD 에서 이름 공간 을 사용 합 니까?DTD 에서 이름 공간 을 사용 하려 면 요 소 를 사용 하 는 ATTLIST 성명 에서 설명 하 십시오.다음 과 같 습 니 다.이름 공간 유형 은\#FIXED 여야 합 니 다.속성의 이름 공간 도 마찬가지 입 니 다.이름 공간 과 XML 구조 DTD 와 XML 구 조 는 혼합 할 수 없습니다.아래 xmlns:x CDATA\#FIXED"x-schema:myschema.xml"은 myschema.xml 에 정 의 된 구조 정 의 를 사용 하지 않 습 니 다.DTD 와 XML 구조 에 대한 사용 은 상호 배척 적 이다.어떻게 Visual Basic 에서 XMLdso 를 사용 합 니까?다음 XML 을 예 로 들 면:   Mark Hanson   206 765 4583     Jane Smith   425 808 1111  ADO 기록 집합 에 다음 과 같이 연결 할 수 있 습 니 다:새로운 VB 6.0 프로젝트 를 만 듭 니 다.Microsoft ActiveX Data Objects 2.1 또는 더 높 은 버 전,Microsoft Data Adapter Library,Microsoft XML 2.0 버 전에 대한 인용 을 추가 합 니 다.다음 코드 로 XML 데 이 터 를 XML DSO 컨트롤 에 불 러 옵 니 다. Dim dso As New XMLdsoControl Dim doc As IXMLdomDocument Set doc=dso.XMLdocument doc.Load("d:\test.xml")는 DataAdapter 를 사용 하 는 새 기록 집합 대상 에 DSO 를 아래 코드 로 표시 합 니 다. Dim da As New DataAdapter Set da.Object=dso Dim rs As New ADODB.Recordset Set rs.Data Source=da 접근 데이터: MsgBox rs.Fields("name").Value 결과 문자열 인"Mark Hanson"이 자바 에서 XML DOM 을 어떻게 사용 하 는 지 보 여 줍 니 다.MSXML.DLL 의 IE5 버 전이 설치 되 어 있어 야 합 니 다.Visual J++6.0 에 서 는 프로젝트 메뉴 에서 COM 패키지 추가 프로그램 을 선택 한 다음 COM 대상 목록 에서'Microsoft XML 1.0'을 선택 합 니 다.이 조작 은 필요 한 자바 포장 프로그램 을'msxml'이 라 고 불 리 는 새 패키지 로 구성 합 니 다.미리 구 성 된 자바 포장 프로그램 도 다운로드 할 수 있다.클래스 는 다음 과 같은 방법 으로 사용 할 수 있 습 니 다.   import com.ms.com.*;  import msxml.*;  public class Class1  {  public static void main (String[] args)  {  DOMDocument doc = new DOMDocument();  doc.load(new Variant("file://d:/samples/ot.xml"));  System.out.println("Loaded " + doc.getDocumentElement().getNodeName());  }  }  코드 예제 에 서 는 sun religion 예제 에서 3.8MB 테스트 파일'ot.xml'을 불 러 옵 니 다.Variant 류 는 Win 32 VARIANT 기본 유형 을 포장 하 는 데 사 용 됩 니 다.노드 를 검색 할 때마다 실제 적 으로 새로운 포장 프로그램 을 얻 었 기 때문에 노드 에 지침 을 사용 하여 비교 할 수 없다.따라서 아래 코드 를 사용 하지 마 세 요.   IXMLDOMNode root1 = doc.getDocumentElement();  IXMLDOMNode root2 = doc.getDocumentElement();  if (root1 == root2)...  다음 코드 를 사용 해 야 합 니 다:   if (ComLib.isEqualUnknown(root1, root2)) ....  .class 패키지 의 전체 크기 는 약 160 KB 입 니 다.그러나 W3C 규범 과 완전히 부합 하기 위해 서 는 IXMLDOM*포장 프로그램 만 사용 해 야 한다.다음 클래스 는 오래된 IE 4.0 XML 인터페이스 로 msxml 폴 더 에서 삭제 할 수 있 습 니 다.   IXMLAttribute*,   IXMLDocument*, XMLDocument*   IXMLElement*,   IXMLError*,   IXMLElementCollection*,   tagXMLEMEM_TYPE*   _xml_error*   이 는 크기 를 147 KB 로 줄 였 다.다음 항목 도 삭제 할 수 있 습 니 다: DOMFreeThreadedDocument 는 자바 응용 프로그램 에서 여러 스 레 드 에서 XML 문 서 를 방문 합 니 다.XML HttpRequest 는 XML DAV HTTP 확장 으로 서버 와 통신 합 니 다.IXTLRuntime 은 XSL 스타일 시트 스 크 립 트 대상 을 정의 합 니 다.HTML 페이지 에 연 결 된 XML 데이터 입 니 다.XMLdomDocumentEvents 는 분석 과정 에서 리 셋 을 되 돌려 줍 니 다.   이 는 크기 를 116 KB 로 줄 일 수 있다.더 작 게 하려 면 DOM 자체 에 두 가지 사실 이 있다 는 것 을 고려 하 십시오.핵심 층 은 다음 과 같 습 니 다.   DOMDocument, IXMLDOMDocument   IXMLDOMNode*   IXMLDOMNodeList*   IXMLDOMNamedNodeMap*   IXMLDOMDocumentFragment*   IXMLDOMImplementation   IXMLDOMParseError  사용자 가 저장 해 야 할 DTD 정보:   IXMLDOMDocumentType   IXMLDOMEntity   IXMLDOMNotation  XML 문서 의 모든 노드 유형 은 IXMLdomNode 로 모든 기능 을 제공 하지만 각 노드 유형의 더 높 은 등급 의 포장 프로그램 이 존재 합 니 다.따라서 DOMDocument 포장 프로그램 을 수정 하고 이 특정 유형 을 IXMLDOMNode 로 변경 하면 아래 의 모든 인 터 페 이 스 를 삭제 할 수 있 습 니 다.   IXMLDOMAttribute   IXMLDOMCDATASection   IXMLDOMCharacterData   IXMLDOMComment   IXMLDOMElement   IXMLDOMProcessingInstruction   IXMLDOMEntityReference   IXMLDOMText  이 를 삭제 하면 크기 가 61KB 로 줄어든다.그러나 IXMLdomElement 에 있어 서 getAttribute 와 setAttribute 방법 은 모두 유용 하 다.그렇지 않 으 면 사용 해 야 합 니 다:   IXMLDOMNode.getAttributes().setNamedItem(...)

좋은 웹페이지 즐겨찾기