0

入力ファイルから行を切り取り、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>

前もって感謝します

4

0 に答える 0