Чтобы обрезать строки в файле в PI

Мне нужно обрезать строки из входного файла и сгенерировать вывод в SAP PI. Это невозможно сделать с помощью графического отображения в sap PI, поэтому я использую java и создаю код в Eclipse.

Я использовал BufferedReader для построения логики, и она работала нормально. Но поскольку XML-файл поступает в PI, я изменил BufferedReader на TransformerFactory и застрял здесь.

public class TestIntegrate {
    private Document doc = null;

    public static void main(String[] args) {
        FileInputStream fin;

        try {
            fin = new FileInputStream("C:/Users/xyz/workspace/TEST_2.xml");
            FileOutputStream fout = new FileOutputStream("D:\\ProgramFiles\\eclipse\\mapping\\poslogoutput.xml");
            TestIntegrate t = new TestIntegrate();
            t.execute(fin, fout);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void execute(InputStream sourceFile, OutputStream targetFile) /*throws StreamTransformationException*/ {
        try {
            // Creating the parser object.
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            dbFactory.setNamespaceAware(true);

            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            doc = dBuilder.parse(sourceFile);

            writeOutputfile(doc, targetFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } // End of execute 
    // Write to the output file 
    private void writeOutputfile(Document doc, OutputStream targetFile) {
        try {
            String lineToRemove = "<Tax>";
            String lineToRemove1 = "</Tax>";
            String currentLine;
            TransformerFactory transformFactory = TransformerFactory.newInstance();
            DOMSource source = new DOMSource(doc);
            Transformer transformer = transformFactory.newTransformer();
            Writer outWriter = new StringWriter();
            StreamResult result = new StreamResult(targetFile);
            transformer.transform(source, result);

            // Logic to trim the lines
            while ((currentLine = reader.readLine()) != null) /* ERROR: no reader object */ {
                String trimmedLine = currentLine.trim();
                if (trimmedLine.equals(lineToRemove) || trimmedLine.equals(lineToRemove1)) continue;
                outWriter.write(currentLine + System.getProperty("line.separator"));
            }

            System.out.println("File saved!");
            reader.close(); //ERROR: no reader object
            writer.close(); //ERROR:no Writer object
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Входной файл:

<?xml version="1.0" encoding="UTF-8"?>
<School>
    <SSLC>
        <name />
        <rollno />
    </SSLC>
    <PUC>
        <first_pu>
            <name />
            <rollno />
        </first_pu>
        <second_pu>
            <name />
            <rollno />
        </second_pu>
    </PUC>
    <PUC>
        <first_pu>
            <name />
            <rollno />
        </first_pu>
        <second_pu>
            <name />
            <rollno />
        </second_pu>
    </PUC>
    <PUC>
        <first_pu>
            <name />
            <rollno />
        </first_pu>
        <second_pu>
            <name />
            <rollno />
        </second_pu>
    </PUC>
</School>

заранее спасибо


person user3497375    schedule 10.04.2015    source источник
comment
Вы не определили reader.   -  person Mr. Polywhirl    schedule 10.04.2015
comment
@ Mr. Polywhirl Спасибо за ответ... на самом деле мне нужно удалить ридер, так как я использую TransformerFactory.. Пожалуйста, предложите мне, что добавить вместо ридера и писателя..   -  person user3497375    schedule 10.04.2015
comment
Можете ли вы предоставить небольшой пример входного и выходного файла?   -  person fluminis    schedule 10.04.2015
comment
Если вы читаете файл XML, когда у вас есть DOM, вы можете перебирать элементы/узлы и обрезать их текстовое значение. См.: Переполнение стека: удаление пробелов и новых строк из XML в Java.   -  person Mr. Polywhirl    schedule 10.04.2015
comment
возможный дубликат Удалить пробелы и новые строки из XML в Java   -  person Mr. Polywhirl    schedule 10.04.2015
comment
входной файл ‹?xml version=1.0 encoding=UTF-8?› ‹School› ‹SSLC› ‹name›‹/name› ‹rollno›‹/rollno› ‹/SSLC› ‹PUC› ‹first_pu› ‹name›‹/ name› ‹rollno›‹/rollno› ‹/first_pu› ‹second_pu› ‹name›‹/name› ‹rollno›‹/rollno› ‹/second_pu› ‹/PUC› ‹PUC› ‹first_pu› ‹name›‹/name › ‹rollno›‹/rollno› ‹/first_pu› ‹second_pu› ‹name›‹/name› ‹rollno›‹/rollno› ‹/second_pu› ‹/PUC› ‹PUC› ‹first_pu› ‹name›‹/name› ‹rollno›‹/rollno› ‹/first_pu› ‹second_pu› ‹name›‹/name› ‹rollno›‹/rollno› ‹/second_pu› ‹/PUC› ‹/School›   -  person user3497375    schedule 10.04.2015
comment
@Г-н. Polywhirl Но откуда вызывать Trim().. Небольшая путаница..:)   -  person user3497375    schedule 10.04.2015
comment
@user3497375 user3497375, пожалуйста, отредактируйте исходный вопрос и вставьте XML туда, а не в комментарий.   -  person Emz    schedule 10.04.2015
comment
@Emz: Ну, 2 часа спустя... Я решил добавить входной файл из комментариев.   -  person Mr. Polywhirl    schedule 10.04.2015