2010-04-17 2 views
0

70 개의 요소가있는 300KB xml 파일이 있습니다. 루트 요소 중 하나를 제거 할 때 효율적이어야합니다. 가장 좋은 방법은 무엇입니까?jdom을 사용하여 xml 파일에서 요소 제거

  • 요소를 메모리에서 분리하고 저장 한 다음 이동하여 덮어 써야합니까?
  • 더 좋은 옵션이 있습니까? ..

내가 반드시 org.jdom 좋아하지만이 로딩없이 XML 파일로 작업 할 수있는 방법이없고 그것을 첫 번째 접근 방식을 구문 분석 작업을 할 수 있기 때문에 어떤 개선이

답변

1

환영 또한 당신은 할 수 없습니다 단순히 관련된 부분없이 파일을 다시 작성하지 않고 파일에서 파일을 제거하십시오.

제외하려는 항목이 아주 간단하고 쉽게 검색 할 수있는 경우 파일을 처리하는 동안 파일을 읽는 동안 제외 할 내용을 다시 작성하지 않고도 파일을 처리 할 수 ​​있습니다. 구문 분석하는 것보다 훨씬 간단 할 수 있습니다 ..

+0

사실 VTD-XML은 내장 된 분석의 오버 헤드를 우회 색인 기능, 구문 분석하지 않고 XML 파일을 사용하여 작업 할 수있는 방법이 ... 한 사전 구문 분석 제공 XML과 함께 색인을 문서화하고 유지합니다. 그것은 vtd + xml이라고합니다 ... http://www.codeproject.com/Articles/24663/Index-XML-Documents-with-VTD-XML –

1

원하지 않는 특정 요소를 제외하고 모든 XML을 복사하는 간단한 XSLT는 어떻게됩니까?

수정 된 identity transform을 사용하고 표시하지 않으려는 요소에 빈 템플릿을 추가하기 만하면됩니다.

예를 들어

:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:template match="/"> 
     <xsl:apply-templates/> 
    </xsl:template> 

    <!--Identity transform copies all nodes and attributes by default --> 
    <xsl:template match="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates /> 
     </xsl:copy> 
    </xsl:template> 

    <!--Create an empty template for the elements that you want to suppress--> 
    <xsl:template match="ElementToRemove" /> 

</xsl:stylesheet>