2010-01-28 3 views
3

xercesc의 XercesDOMParser를 사용하여 클라이언트에서 들어오는 xml을 구문 분석하는 기존 시스템에서 xincludes를 사용하려고합니다. 나는 아파치 Xercesc의 V3.0.1 및 입력 스트림로부터 읽어 들어오는 XML, 함께 일하고 있습니다 :XercesDOMParser 및 XIncludes

<?xml version="1.0" encoding="UTF-8"?> 
<VisionServer xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <CompositeObject> 
<xi:include href="testguioutput.xml" /> 

testguioutput.xml이

<?xml version="1.0" encoding="UTF-8"?> 
<GUIOutput> 
    <Input>Input</Input> 
    <Title>IDC2_1</Title> 
</GUIOutput> 

기존 코드를 포함하는 동안 XercesDOMParser 주위의 래퍼 (wrapper)를 사용하여 XML을 파싱하고 setDoNamespaces 및 setDoXInclude를 true로 사용하면 XInclude를 구문 분석하려고 시도하지만 영구적 인 "치명적 : 문서에 오류 발생 및 대체 요소가 포함되지 않음" {0} ''디렉토리 구조에서 testguioutput.xml을 어디에 두든 상관 없습니다.

visualstudio 2008에서 작업 중인데 작업 디렉토리가 기본값이고/project/debug가 부족하지만 대상 파일이/project/또는/project/debug /에 있는지 여부에 관계없이 오류가 발생합니다.

답변

0

Xerces 응용 프로그램에 포함되어있는 XInclude.exe 샘플 응용 프로그램을 사용하여 xinclude 태그를 확장 할 수있었습니다. 이를 위해, 나는 위의 파일을 사용하여 두 개의 파일을 생성 :

test1.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<VisionServer xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <CompositeObject> 
    <xi:include href="test2.xml"/> 
    </CompositeObject> 
</VisionServer> 

test2.xml :

: 나는 실행 명령 줄에서

<?xml version="1.0" encoding="UTF-8"?> 
<GUIOutput> 
    <Input>Input</Input> 
    <Title>IDC2_1</Title> 
</GUIOutput> 

"XInclude.exe test1.xml test1_expanded.xml"따옴표 제외.

는 결과 test1_expanded.xml 파일 :

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<VisionServer xmlns="" xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <CompositeObject> 
    <GUIOutput xml:base="test2.xml"> 
     <Input>Input</Input> 
     <Title>IDC2_1</Title> 
    </GUIOutput> 
    </CompositeObject> 
</VisionServer> 
+0

나는 문제가 나는 파일에서로드 test1.xml 처리하지 오전 것 같아요, 내가 입력 스트림에서 발생하고 있습니다. 즉, test2.xml을로드 할 컨텍스트가 없다는 의미 일 수 있지만이를 수정하는 방법을 모르겠습니다. – NinjaDebugger

+1

큰 누락입니다. 왜 코드를 게시하지 않으시겠습니까? – lavinio