2014-01-15 9 views
0

XML 문서의 '골격'을 빠르게 생성하는 방법이 있습니까? 나는 그 말을 어떻게 다른 모르겠지만, 여기에 내가 필요의 예입니다 ... 그냥 내 스켈 리턴을 돌려 받으려고

내가이 (아마도 심하게 형성) XML 문서를 가지고 말 ...

<ImATag> 
    <SoAmI> 
      *some random data...* 
      <OneMore> 
       *some more random data...* 
      </OneMore> 
    </SoAmI> 
</ImATag> 

그리고 이걸 돌려주고 싶었 ...

<ImATag> 
    <SoAmI> 
      <OneMore> 
      </OneMore> 
    </SoAmI> 
</ImATag> 

빠른 방법이 있습니까? 프로그램, 웹 사이트 등? 내 문서는 수천 페이지에 불과하므로 수동으로 처리 할 수는 없습니다. 나는 정말로 태그 내의 모든 데이터를 제거하고 문서의 윤곽선 만 반환하려고한다고 생각합니다.

답변

0

나는 산소만을 사용했다. 이 기능이 나를 위해 작동합니까.

0

물론 XSLT는 상당히 평범 할 것입니다. (정체성 변환과 "텍스트 노드가 출력을 생성하지 않는다"는 변환 - 당신은 속성을 버리거나 내용을 속성화할지 여부를 분명히하지 않았지만 쉽게 처리 할 수 ​​있지만 내용도 쉽게 처리 할 수 ​​있습니다.)

XML을 파싱하고 재 직렬화하는 표준 DOM 또는 SAX 샘플 프로그램 중 하나이며 원하지 않는 텍스트를 삭제하도록 수정합니다. 아마도 SAX 샘플에서 그 변화를 만드는 것이 더 쉽습니다.

0

XSL 처리가 필요합니다.

xsltproc xsl your-xml 

또는 Java 또는 .NET, 또는를 mosth : xsltproc처럼

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="text()"/> 
</xsl:stylesheet> 

당신은 너무는 XSLT 프로세서가 필요합니다

다음 XSLT는 text() 노드를 제외한 모든 노드를 복사합니다 XML 구문 분석 라이브러리 (일반적으로 XSL 변환 함수 포함)가있는 다른 프레임 워크.

+0

이렇게하면 텍스트 만 표시됩니다. O.o – Volearix

+0

xsltproc 사용? 내 XSLT에 대해 제공된 입력 XML을 실행하고 원하는 (스켈레톤) XML을 다시 가져 왔습니다. –

+0

오, XML에 예제 XML에 표시되지 않은 네임 스페이스가 있습니까? –

0

를 사용하여 자바와 SAXParser를의 클래스는 DefaultHandler 클래스를 처리하고 문자열의 QName 어디

public void startElement(String namecpaceUri, String localName, String qName, Attributes attrs){} 

public void endElement(String namecpaceUri, String localName, String qName){} 

에 데이터를 기록 - 당신이 필요로하는 모든 것을입니다.