나는 클라이언트로부터 XML을 받아들이는 소프트웨어를 작성 중이다. 는 XML HAS2 부품, 세트 필드를 포함하는 표준 부품, 그리고 우리의 고객이 시스템은되도록 설정되어vb.net에서 XML 네임 스페이스 참조 추가
<OverallDocument>
<SetFields>
<name>Jon Doe</name>
<age>24</age>
<sex>M</sex>
</SetFields>
<FreeXML>
<!--custom xml goes here-->
</FreeXML>
</OverallDocument>
자신의 XML을 직접 추가 할 수있는 자유 부분 OverallDocument는 모든 부분을 커버하는 스키마를 가지고 Free XML 태그 안에 들어가는 것을 제외하고 xml의 FreeXML 태그의 내용에는 클라이언트가 보낸 자체 스키마가 있습니다. 이
<Custom1>
<CustomString>aaaaaa</CustomString>
<CustomInt>12345</CustomInt>
</Custom1>
프로그램은 추가 처리를 위해 클라이언트의 사용자 지정 XML을 추출하기 위해 노력하고있다처럼
<OverallDocument>
<SetFields>
<name>Jane Doe</name>
<age>30</age>
<sex>F</sex>
</SetFields>
<FreeXML>
<Custom1>
<CustomString>aaaaaa</CustomString>
<CustomInt>12345</CustomInt>
</Custom1>
</FreeXML>
</OverallDocument>
이 경우 클라이언트의 XML 보인다.
지금까지 문제가 없습니다. 이 모든 것은 xmldocument로 멋지게 읽습니다. 불행히도 일부 고객은 xml 문서의 접두사를 선언하지 않고도 사용자 지정 xml에 네임 스페이스 접두사를 사용합니다.
<OverallDocument>
<SetFields>
<name>Jane Doe</name>
<age>30</age>
<sex>F</sex>
</SetFields>
<FreeXML>
<hl:Custom1>
<CustomString>aaaaaa</CustomString>
<CustomInt>12345</CustomInt>
</hl:Custom1>
</FreeXML>
</OverallDocument>
이렇게하면 접두어가 xml에 선언되지 않아 xmldocument가 넘어갑니다. 코드에서 모든 네임 스페이스 접두사를 제거하여이 문제를 해결하기 위해 노력했지만 클라이언트의 스키마에서 접두사를 태그에 사용해야하므로 처리 과정에서 나중에 문제가 발생합니다.
몇 가지 더 문제가
- 우리는 다른 스키마와 다른 네임 스페이스에 많은 클라이언트가 있습니다.
- 각 XML 파일은 다른 섹션에서 여러 FreeXML 요소를 가질 수 있습니다 (그래서 다른 클라이언트가 문서 전반에 걸쳐 서로 다른 위치 1 이상 사용 섹션을 사용할 때 단순히 FreeXML 섹션을 추출 수 없습니다.
- 우리는 고객의 스키마를 편집 할 수 없습니다.
- 우리는 작업 XML을 자신의 행동을 정렬하고 작성하는 고객을 말할 수 없다. 이상적으로 그것을
네임 스페이스와 접두어를 xmldocument 리더에 지정할 수 있다면 가장 좋을 것입니다. 그것은이 문제를 해결하는 방법을 보인다 예를 들어
dim xdoc as xmldocument = xmldocument
'add namespace and prefix
xdoc.loadxml(xmlcode)