Java SE에서 XML 노드를 제거하는 방법은 무엇입니까? org.apache.xerces
을 사용하고 있습니다. 감사. 아래 코드는 작동하지 않습니다.Java SE를 사용하여 XML 노드 제거
2
A
답변
0
작동하지 않습니다. 그러나 XML 파일에는 저장되지 않습니다. 변경 내용은 Document 객체에 저장됩니다.
는 파일의 Document 객체에 저장하려면 :OutputFormat of = new OutputFormat("XML","UTF-8",true);
XMLSerializer serializer = new XMLSerializer();
serializer.setOutputFormat(of);
serializer.setOutputByteStream(new FileOutputStream(PATH));
serializer.serialize(doc);
-1
을 내가 왜 말할 수 없다 얼핏에서. Eclipse에서 디버거를 사용하여 자세한 정보를 제공하십시오. 메서드 및 단계 물마루에 디버그 지점을 설정하고 각 줄을 검사하십시오.
디버그 식을 사용하여 루프를 검사하여 문제의 범위를 좁히고 싶은 모든 항목이 있는지 확인하십시오.
3
전체 DOM을 생성하는 것은 다소 과잉입니다. 메모리에 전체 XML 트리가있어 대규모 문서의 경우 다소 부담이 될 수 있습니다. 당신이 그것을 필터링하지 않으려면 단순히 출력에 물건을 복사, SAX 또는 StAX를 가진
- 구문 분석 : 나는 다음 중 하나를 제안한다.
- 기본적으로 모든 내용을 복사하지만 입력 내용을 처리하지 않는 하나 이상의 템플릿이있는 XSLT 변환을 적용하여 필터링합니다.
옵션 2가 가장 쉽고 내 경험에 비추어 볼 때 Java의 XSLT는 빠르고 효율적인 메모리 사용이 가능하며 특히 이와 같은 간단한 사용 사례에 적합합니다.
기본 복사
<xsl:template match="node()|@*">
<xsl:copy><xsl:apply-templates select="node()|@*"/><xsl:copy>
</xsl:template>
은 "필터":
이 두 템플릿
는 당신이 필요로 할 것이다<xsl:template match="//*[your predicate here]">
<!-- Don't do a thing -->
</xsl:template>
편집 : 난 그냥 당신이 방금하지 않는 것으로 나타났습니다 특정 이름은 제외하지만 정규 표현식과 일치하는 이름은 필터링하십시오. XPath 함수는 술어가 대상 노드를 선택하는 데 충분할 수 있습니다. 그러나 필요한 경우 Java String 함수를 확장을 통해 XSLT에서 사용할 수 있습니다. 이 솔루션을 약간 더 복잡하게 만들지 만 XML 구문 분석을 손에 쥐기에는 여전히 가치가 있습니다.
관련 문제
- 1. WS 보안 헤더의 Expires 노드 (xml) 제거
- 2. XSL 템플릿 출력에서 XML 루트 노드 제거
- 3. TIBCO BusinessWorks에서 특정 XML 노드 제거
- 4. 은 Java EE를 탐색하기 전에 Java SE를 이해해야합니까?
- 5. XML에서 노드 제거
- 6. XSLT를 사용하여 XML 노드 재구성
- 7. XSLT를 사용하여 XML 노드 병합
- 8. 노드 번호를 사용하여 XML 쿼리하기
- 9. Java DOM을 사용하여 XML 노드 텍스트 값 가져 오기
- 10. DOM을 사용하여 노드 값을 가져 오는 Java XML 구문 분석
- 11. 노드 테이블에서 행 제거
- 12. 노드 제거 및 추가
- 13. simpleXML에서 노드 제거
- 14. DOM 탐색 : 텍스트 노드 제거
- 15. XML 노드 가져 오기 및 네임 스페이스 제거
- 16. 지정된 노드 다음에있는 모든 노드 제거
- 17. DIV 내의 하위 노드 제거
- 18. DOM 및 XPath를 사용하여 사이트 맵 파일에서 노드 제거
- 19. 특정 텍스트 값을 가진 하위 노드로 XML 노드 제거
- 20. Xml PHP를 사용하여 요소 노드 추가
- 21. PHP - 단순 XML을 사용하여 XML 노드 중복
- 22. Grails : 변수를 사용하여 XML 노드 만들기
- 23. LINQ를 사용하여 임의의 XML 노드 선택
- 24. PHP SimpleXML을 사용하여 XML 노드 값을 검색
- 25. 자바 애플릿이 웹 사이트에서 Java SE를 작동시키는 유일한 방법입니까?
- 26. SSIS를 사용하여 Xml 열로 XML 노드 가져 오기
- 27. 노드 제거 이중 스레드 LnkLst
- 28. 노드 제거 및 이벤트 핸들러
- 29. C++ - AVL 트리에서 노드 제거
- 30. C에서 treeview에서 자식 노드 제거 #
그렇다면 트리를 다시 XML로 저장해야합니다. org.w3c.dom.ls 패키지의 LSSerializer를 사용할 수 있습니다. –