2014-11-01 3 views
0

StaX XMLEventReaderXMLEventWriter을 사용하고 있습니다. 바이트 배열로 저장된 원본 xml 파일의 임시 사본을 수정해야합니다. 내가 이렇게하면 (디버그, 파일에 작성 중) :xml 파일 (전체적으로 동일한 복사본)을 복제하는 방법

<VendorText textId="T_VendorText" /> 

복제 :

<VendorText textId="T_VendorText"></VendorText> 

은 왜이 말을두고있다

public boolean isCrcCorrect(Path path) throws IOException, XPathExpressionException { 
    ByteArrayOutputStream output = new ByteArrayOutputStream(); 
    XMLEventFactory eventFactory = XMLEventFactory.newInstance(); 
    XMLEventReader reader = null; 
    XMLEventWriter writer = null; 

    StreamResult result; 
    String tagContent; 

    if (!fileData.currentFilePath.equals(path.toString())) { 
     parseFile(path); 
    } 

    try { 
     System.out.println(path.toString()); 
     reader = XMLInputFactory.newInstance().createXMLEventReader(new FileReader(path.toString())); 
     //writer = XMLOutputFactory.newInstance().createXMLEventWriter(output); 
     writer = XMLOutputFactory.newInstance().createXMLEventWriter(new FileWriter("f:\\Projects\\iqpdct\\iqpdct-domain\\src\\main\\java\\de\\iq2dev\\domain\\util\\debug.xml")); 

     writer.add(reader); 
     writer.close(); 
    } catch(XMLStreamException strEx) { 
     System.out.println(strEx.getMessage()); 
    } 

    crc.reset(); 
    crc.update(output.toByteArray()); 
    System.out.println(crc.getValue()); 
    //return fileData.file_crc == crc.getValue(); 
    return false; 
} 

복제는 원점에서 소스를 다른 꼬리표? 소스에는 아무 것도 없습니다.

답변

2

바이트 스트림의 정확한 복사본을 XML 문서로 만들고 싶다면 바이트 스트림으로 복사해야합니다. 구문 분석기 프론트 엔드의 목적이 의미가 다를 수 있지만 의미 상 동등한 기능에서 코드를 분리하기 때문에 XML 파서에 백엔드를 제공하여이를 복사 할 수 없습니다. 귀하의 경우에는 빈 요소를 나타내는 두 가지 방법이 있습니다.

+0

고맙습니다. – Constantine