단일 값을 구문 분석하기 위해 전체 XML 문서를 메모리로 읽을 필요가 없기 때문에 SAX를 사용하여 XML을 구문 분석합니다. SAX는 XML을 파싱/디코딩하고 생성하지 않을 수 있다고 주장한 많은 기사를 읽었습니다. 사실입니까?Java 1.4 및 SAX를 사용하여 임의의 데이터를 XML로 인코딩하는 방법은 무엇입니까?
2
A
답변
4
아니, 그것과 유사한 것을 사용하여 Java에서 어떤 작가에 XML을 인코딩 할 수 있습니다, 사실이 아니다 :
char[] ch;
AttributesImpl atts = new AttributesImpl();
Writer writer = new StringWriter();
StreamResult streamResult = new StreamResult(writer);
SAXTransformerFactory tf = (SAXTransformerFactory) TransformerFactory.newInstance();
// SAX2.0 ContentHandler
TransformerHandler transformerHandler = tf.newTransformerHandler();
Transformer serializer = transformerHandler.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
// serializer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "nodes.dtd");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
transformerHandler.setResult(streamResult);
transformerHandler.startDocument();
atts.clear();
// atts.addAttribute("", "", "xmlns", "CDATA", "http://www.example.com/nodes");
// atts.addAttribute("", "", "xmlns:xsi", "CDATA", "http://www.w3.org/2001/XMLSchema-instance");
// atts.addAttribute("", "", "xsi:schemaLocation", "CDATA", "/nodes.xsd");
transformerHandler.startElement("", "", "node_list", atts);
// displayName element
if (displayName != null) {
transformerHandler.startElement("", "", "display_name", null);
ch = displayName.toCharArray();
transformerHandler.characters(ch, 0, ch.length);
transformerHandler.endElement("", "", "display_name");
}
// nodes element
transformerHandler.startElement("", "", "nodes", null);
atts.clear();
atts.addAttribute("", "", "node_type", "CDATA", "sometype");
transformerHandler.startElement("", "", "node", atts);
ch = node.getValue().toCharArray();
transformerHandler.startElement("", "", "value", null);
transformerHandler.characters(ch, 0, ch.length);
transformerHandler.endElement("", "", "value");
transformerHandler.endElement("", "", "node");
transformerHandler.endElement("", "", "nodes");
transformerHandler.endElement("", "", "node_list");
transformerHandler.endDocument();
String xml = writer.toString();
0
핸들러 인터페이스를 쉽게 구현할 수 있도록 설계 하였다 SAX. 비슷한 체인 (SAX 인터페이스를 래핑하는 것)을 작성하는 것은 쉽습니다. 호출 연결을 쉽게하고, 닫을 요소, 더 쉬운 특성 등을 기억하십시오.
관련 문제
- 1. Javascript를 사용하여 임의의 바이트/데이터를 base64 형식으로 인코딩하는 방법은 무엇입니까?
- 2. Linq를 사용하여 XML로 데이터를 검색하는 방법은 무엇입니까?
- 3. DataGridview 열에서 데이터를 인코딩하는 방법은 무엇입니까?
- 4. 양식 데이터를 인코딩하는 가장 좋은 방법은 무엇입니까?
- 5. 데이터를 앱으로 XML로 작성하기
- 6. java 1.5 to 1.4
- 7. SAX를 사용하여 노드에서 변환 실행
- 8. 다음 데이터를 XML로 표현하는 방법은 무엇입니까?
- 9. 안드로이드에서 json 데이터를 xml로 변환하는 방법은 무엇입니까?
- 10. 소켓을 통해 XML로 데이터를 전달하는 방법은 무엇입니까?
- 11. reportviewer 데이터를 xml로 변환
- 12. PHP를 사용하여 비디오를 인코딩하는 방법은 무엇입니까?
- 13. 데이터베이스에서 임의의 데이터를 가져 오는 방법은 무엇입니까?
- 14. Java XML 구문 분석 : SAX를 사용하여 내부 XML 가져 오기
- 15. 실시간 오디오를 인코딩하는 방법은 무엇입니까?
- 16. 임의의 XML로 XmlSlurper 태그 바꾸기
- 17. struts2를 사용하여 Java bean 배열을 XML로 렌더링하는 방법은 무엇입니까?
- 18. 임의의 문자열을 루비의 xml로 변환
- 19. 비디오를 인코딩하는 방법은 무엇입니까?
- 20. NSInvocation을 인코딩하는 방법은 무엇입니까?
- 21. NSDecimal을 인코딩하는 방법은 무엇입니까?
- 22. 파이썬으로 인코딩하는 방법은 무엇입니까?
- 23. gstreamer를 사용하여 ffv1 파일을 인코딩하는 방법은 무엇입니까?
- 24. URL에 + 및 & 문자를 인코딩하는 올바른 방법은 무엇입니까
- 25. JavaScript 및 PHP로 URL을 인코딩하는 방법은 무엇입니까?
- 26. SAX를 사용하여 일반적인 XML 요소를 구문 분석합니다.
- 27. Java 1.4 팩토리 질문
- 28. Java PriorityQueue의 임의의 요소를 비교하는 방법은 무엇입니까?
- 29. SAX를 사용하여 XML의 유효성을 검사하는 방법?
- 30. java 1.4 : executeBatch를 사용하여 단일 히트를 사용하여 데이터베이스에 여러 레코드를 삽입하는 방법은 무엇입니까?
덕분에 메모리에 전체 문서가 빌드됩니까? XSLT 프로세서를 사용하고 있습니까? –
오래된 주제이지만이 코드는 제대로 작동하지 않습니다. 누군가는 앞으로이 해결책을 찾아서 위의 코드를 실행하려고 시도 할 것입니다. –