SAX 파서로 XML DOM 문서를 생성 중입니다. 나는 startCDATA
및 endCDATA
방법을 처리하는 방법을 쓴하고 endCDATA
방법이 같은 새로운 CDATA 섹션 구성 : 내가 변압기를 구성하려면 다음 줄을 사용하는 XML 파일이 직렬화 할 때Java DOM 문서를 XML로 직렬화하기 : CData 요소 추가하기
public void onEndCData() {
xmlStructure.cData = false;
Document document = xmlStructure.xmlResult.document;
Element element = (Element) xmlStructure.xmlResult.stack.peek();
CDATASection section = document.createCDATASection(xmlStructure.stack.peek().characters);
element.appendChild(section);
}
를 :
transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "con:setting");
이 다른 도구에 대한 문제가 더 <![CDATA[
태그 내 XML 파일에 나타나지 않는 대신 모든, 집합이 >
및 <
으로 탈출하는 작은 절대로하지만로 파일을 읽을 필요가 인간에 대한 문제가 잘. 나는 "con : setting"태그가 올바른 것이라고 긍정적이다. 네임 스페이스 접두어에 문제가 있습니까?
또한 this question은 CDATA_SECTION_ELEMENTS 속성을 생략 할 수 없으며 일반적으로 데이터를 이스케이프 처리하지 않고 모든 CDATA 노드를 직렬화 함을 나타냅니다. 그 정보가 맞습니까? 아니면 대답의 저자가 알지 못했던 다른 방법이 있습니까?
업데이트 : 내 코드에 실수가있는 것 같습니다. document.createCDATASection()
함수를 사용할 때 변압기에 CDATA_SECTION_ELEMENTS
속성을 사용하지 않아도 변압기로 코드를 DOES으로 출력하면 CDATA 태그가 출력됩니다.
당신은 XSLT 스타일 시트를 실행하는 변압기로 입력에서 CDATA를 보존 할 수없는, 어쩌면 규칙 (가능성이 결과는 프로세서 고유의 것 또는) 노 연산 변압기 다릅니다. –
저장된 XML 파일에 CDATA 태그가 추가 된 것 같습니다. – lanoxx
다른 TransformerFactory 구현으로 동일한 동작을하는지 보는 것이 흥미로울 것입니다. 예를 들어 Saxon으로 전환하면 no-op Transformer는 여전히 CDATA를 보존합니까? 어느 쪽이든 그것을 정의하는 JAXP 스펙에서는 아무것도 볼 수 없지만 DOM LS 메커니즘이 모든 경우에 꼭 필요한대로 작동한다는 것을 알고 있습니다. –