2016-12-16 14 views
0

finalDocument 문서를 받고 과 동일한 DocType을 입력하고 싶습니다.왜 변환 후 DocType이 null입니까?

finalDocument = icBuilder.parse(new InputSource(new ByteArrayInputStream(xmlString.getBytes("UTF-8")))); 

Transformer transformer = TransformerFactory.newInstance().newTransformer(); 

DocumentType doctype = xmlDocument.getDoctype(); 

StringWriter writer = new StringWriter(); 

transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, doctype.getSystemId()); 
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, doctype.getPublicId());  

transformer.transform(new DOMSource(finalDocument), new StreamResult(writer)); 

그러나 finalDocumentDocType가 설정되지 않은 몇 가지 이유 : 이것은 내가 그것을 할 방법이다. 나는 예외 또는 아무것도 얻지 않는다 - 다만 null이다.

내가 뭘 잘못하고 있는지 알기!

Btw : doctype.getSystemId()doctype.getPublicId()은 유효하지 않습니다.

+0

글쎄, 시작하려면 DocType이 있습니까? 표시 한 코드에서 결코 업데이트되지 않습니다. –

+0

@ forty-two 'finalDocument'를 의미합니까? 그것이 있으면 중요합니까? – displayname

+0

w3c 태그는 어떻게 관련이 있습니까? 이것은 정확히 표준 자체에 대한 질문이 아니라 프로그래밍 문제입니다. – tambre

답변

1

finalDocument 변수는 transform에있어서 소스로 전달된다

void javax.xml.transform.Transformer.transform(Source xmlSource, Result outputTarget) throws TransformerException 

변환의 결과를 상기 제 파라미터에 배치된다. 그래서 당신은 setOutputProperty으로 설정된 docType이 당신의 writer 객체 인 target에 위치 할 것으로 기대합니다.

+0

True - 그 이유는 다른 사람의 코드를 복사하여 붙여 넣으면 안됩니다. ^^ – displayname