Java Transformer를 통해 원격 서버에서 XML이 들여 쓰기되지 않음

사이먼 C

javax.xml.transform.TransformerXML 문자열을 들여 쓰기 위해를 사용하는 Java 애플리케이션에 문제가 있습니다 .

문제는 로컬 컴퓨터에서는 제대로 작동하지만 원격 컴퓨터에 배포하면 들여 쓰기가 무시된다는 것입니다. 우리는 동일한 서버 (Wildfly 8.2)와 동일한 Java (1.8)를 로컬 및 서버에서 사용하고 있습니다.

들여 쓰기를 수행하는 방법 :

public static String transToXMLString(Document doc) {
        try {
            StreamResult sw = new StreamResult(new StringWriter());
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer transformer;

            transformer = tf.newTransformer();

            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
            transformer.setOutputProperty(OutputKeys.METHOD, "xml");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

            transformer.transform(new DOMSource(doc), sw);

            return sw.getWriter().toString();
        } catch (TransformerException e) {
            e.printStackTrace();
        }

        return null;
    }

로컬 시스템의 결과 :

13:45:30,583 INFO  [stdout] (default task-6) <?xml version="1.0" encoding="UTF-8" standalone="no"?>

13:45:30,583 INFO  [stdout] (default task-6) <workflow URI="">

13:45:30,583 INFO  [stdout] (default task-6)   <output ID="" URI="#out1"/>

13:45:30,583 INFO  [stdout] (default task-6)   <input ID="sessionToken" URI="#sessionToken"/>

13:45:30,583 INFO  [stdout] (default task-6)   <services>

13:45:30,584 INFO  [stdout] (default task-6)     <sequence>

13:45:30,584 INFO  [stdout] (default task-6)       <service URI="">

13:45:30,584 INFO  [stdout] (default task-6)         <input ID="" URI=""/>

13:45:30,584 INFO  [stdout] (default task-6)         <input URI="" value=""/>

13:45:30,584 INFO  [stdout] (default task-6)         <output ID="" URI=""/>

13:45:30,584 INFO  [stdout] (default task-6)       </service>

13:45:30,584 INFO  [stdout] (default task-6)     </sequence>

13:45:30,584 INFO  [stdout] (default task-6)   </services>

13:45:30,584 INFO  [stdout] (default task-6) </workflow>

13:45:30,584 INFO  [stdout] (default task-6) 

원격 서버의 결과 :

2015-12-08 13:47:36,577 INFO  [stdout] (default task-6) Client : close()......
2015-12-08 13:47:36,599 INFO  [stdout] (default task-6) <?xml version="1.0" encoding="UTF-8"?><workflow URI="">
2015-12-08 13:47:36,600 INFO  [stdout] (default task-6) <output ID="" URI="#out1"/>
2015-12-08 13:47:36,600 INFO  [stdout] (default task-6) <input ID="sessionToken" URI="#sessionToken"/>
2015-12-08 13:47:36,602 INFO  [stdout] (default task-6) <services>
2015-12-08 13:47:36,605 INFO  [stdout] (default task-6) <sequence>
2015-12-08 13:47:36,605 INFO  [stdout] (default task-6) <service URI="">
2015-12-08 13:47:36,606 INFO  [stdout] (default task-6) <input ID="" URI=""/>
2015-12-08 13:47:36,607 INFO  [stdout] (default task-6) <input URI="" value=""/>
2015-12-08 13:47:36,608 INFO  [stdout] (default task-6) <output ID="" URI=""/>
2015-12-08 13:47:36,608 INFO  [stdout] (default task-6) </service>
2015-12-08 13:47:36,609 INFO  [stdout] (default task-6) </sequence>
2015-12-08 13:47:36,609 INFO  [stdout] (default task-6) </services>
2015-12-08 13:47:36,610 INFO  [stdout] (default task-6) </workflow>
2015-12-08 13:47:36,610 INFO  [stdout] (default task-6)

이 xml을 웹 페이지의 텍스트 영역에 표시하고 있는데 들여 쓰기가 필요합니다. 로컬 컴퓨터에서 원격과 다르게 동작하고 CSS가 동일하고 자바 버전이 동일하다는 점이 이상합니다. Transformes 클래스가 원격 서버와 로컬에서 다르게 작동하는 것으로 보입니다.

또한 clonsole 및 로그 설정의 차이를 피하기 위해 Transformer 출력을 파일에 작성하려고했습니다.

localhost의 파일은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<workflow URI="">
  <output ID="" URI="#out1"/>
  <input ID="sessionToken" URI="#sessionToken"/>
  <services>
    <sequence>
      <service URI="">
        <input ID="" URI=""/>
        <input URI="" value=""/>
        <output ID="" URI=""/>
      </service>
    </sequence>
  </services>
</workflow>

그리고 원격 서버에서 (그러므로 들여 쓰기없이) :

<?xml version="1.0" encoding="UTF-8"?><workflow URI="">
<output ID="" URI="#out1"/>
<input ID="sessionToken" URI="#sessionToken"/>
<services>
<sequence>
<service URI="">
<input ID="" URI=""/>
<input URI="" value=""/>
<output ID="" URI=""/>
</service>
</sequence>
</services>
</workflow>

그래서 나에게는 Transformer 메서드의 다른 동작처럼 보이지만 어떻게 될 수 있습니까 ??

사이먼 C

XML 형식을 지정하기 위해 DOM4J를 선택했으며 로컬 및 원격 모두 동일하게 작동합니다. 내 스니 플릿은 다음과 같습니다.

public static String prettyPrintXml(String xml) {

        final StringWriter sw;

        try {
            final OutputFormat format = OutputFormat.createPrettyPrint();
            format.setSuppressDeclaration(true);
            final org.dom4j.Document document = DocumentHelper.parseText(xml);
            sw = new StringWriter();
            final XMLWriter writer = new XMLWriter(sw, format);
            writer.write(document);
        } catch (Exception e) {
            throw new RuntimeException("Error pretty printing xml:\n" + xml, e);
        }
        return sw.toString();
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SSHFS를 통해 변경 한 후 원격 웹 서버 페이지가 업데이트되지 않음

분류에서Dev

SSH를 통해 원격 서버에서 명령 실행-종료하지 않고

분류에서Dev

원격 Selenium 서버에서 Jenkins를 통해 각도기 테스트를 실행하여 사양을 찾을 수 없음

분류에서Dev

pscp를 통해 파일을 복사 할 때 "두 개 이상의 원격 소스가 지원되지 않음"

분류에서Dev

PHP : $ var! = NULL이 원격 서버에서 작동하지 않음

분류에서Dev

Java를 통해 원격 데이터베이스에 연결

분류에서Dev

Java 코드를 통해 RelativeLayout.LayoutParams에서 하단 여백 설정이 작동하지 않음

분류에서Dev

원격 PC를 건드리지 않고 SSH를 통해 VNC를 사용하여 로컬 PC에서 X11 창을 원격 PC로 보냅니다.

분류에서Dev

Java 인터페이스를 통해 ArangoDB에 원격 액세스

분류에서Dev

Rsync Linux를 사용하여 하위 디렉터리가 원격 서버에 복사되지 않음

분류에서Dev

file : // 프로토콜을 통해 원격 컴퓨터에서 정적 웹 페이지를 여는 방법

분류에서Dev

Invoke-Command를 통해 원격 cmdlet (ffmpeg) 호출 : "... 이름으로 인식되지 않음 ..."

분류에서Dev

IBLite를 사용하여 Android에서 Interbase의 원격 인스턴스에 연결이 작동하지 않음

분류에서Dev

Java를 사용하여 원격 서비스에 xml 요청 보내기

분류에서Dev

원격 시스템이 예기치 않게 연결 해제 될 때 원격 시스템에서 SSH 프로세스가 종료되지 않음

분류에서Dev

원격 시스템이 예기치 않게 연결 해제 될 때 원격 시스템에서 SSH 프로세스가 종료되지 않음

분류에서Dev

서버가 SSH를 통해 대상 서버에 연결되지 않는 이유

분류에서Dev

Windows 배치 파일을 통해 PuTTY를 사용하여 원격 서버에 SSH?

분류에서Dev

덮어 쓰지 않고 cronjob을 통해 원격 서버에서 RPi로 mp3 파일 전송

분류에서Dev

파일 클라이언트를 통해 원격 서버에 연결

분류에서Dev

Tab 키가 VS 코드에서 들여 쓰기되지 않음

분류에서Dev

원격 분기를 삭제해도 GitHub에서 제거되지 않습니다.

분류에서Dev

cygwin이 원격 시스템에 설치되지 않은 경우 Java를 사용하여 원격 Windows 시스템에 연결

분류에서Dev

NAT 뒤의 원격 서버를 통해 원격 컴퓨터에 액세스하기

분류에서Dev

미러 베어 원격을 통해 원격에서 모든 분기를 당겨

분류에서Dev

팀 탐색기에 원격 지점이 표시되지 않음

분류에서Dev

SSH를 통해 원격 Ubuntu 시스템에 로그인 할 수 없음-연결이 거부되었습니다.

분류에서Dev

ssh를 통해 원격 서버를 재부팅 할 때 bash 스크립트가 예기치 않게 종료 됨

분류에서Dev

ssh를 통해 원격 서버를 재부팅 할 때 bash 스크립트가 예기치 않게 종료 됨

Related 관련 기사

  1. 1

    SSHFS를 통해 변경 한 후 원격 웹 서버 페이지가 업데이트되지 않음

  2. 2

    SSH를 통해 원격 서버에서 명령 실행-종료하지 않고

  3. 3

    원격 Selenium 서버에서 Jenkins를 통해 각도기 테스트를 실행하여 사양을 찾을 수 없음

  4. 4

    pscp를 통해 파일을 복사 할 때 "두 개 이상의 원격 소스가 지원되지 않음"

  5. 5

    PHP : $ var! = NULL이 원격 서버에서 작동하지 않음

  6. 6

    Java를 통해 원격 데이터베이스에 연결

  7. 7

    Java 코드를 통해 RelativeLayout.LayoutParams에서 하단 여백 설정이 작동하지 않음

  8. 8

    원격 PC를 건드리지 않고 SSH를 통해 VNC를 사용하여 로컬 PC에서 X11 창을 원격 PC로 보냅니다.

  9. 9

    Java 인터페이스를 통해 ArangoDB에 원격 액세스

  10. 10

    Rsync Linux를 사용하여 하위 디렉터리가 원격 서버에 복사되지 않음

  11. 11

    file : // 프로토콜을 통해 원격 컴퓨터에서 정적 웹 페이지를 여는 방법

  12. 12

    Invoke-Command를 통해 원격 cmdlet (ffmpeg) 호출 : "... 이름으로 인식되지 않음 ..."

  13. 13

    IBLite를 사용하여 Android에서 Interbase의 원격 인스턴스에 연결이 작동하지 않음

  14. 14

    Java를 사용하여 원격 서비스에 xml 요청 보내기

  15. 15

    원격 시스템이 예기치 않게 연결 해제 될 때 원격 시스템에서 SSH 프로세스가 종료되지 않음

  16. 16

    원격 시스템이 예기치 않게 연결 해제 될 때 원격 시스템에서 SSH 프로세스가 종료되지 않음

  17. 17

    서버가 SSH를 통해 대상 서버에 연결되지 않는 이유

  18. 18

    Windows 배치 파일을 통해 PuTTY를 사용하여 원격 서버에 SSH?

  19. 19

    덮어 쓰지 않고 cronjob을 통해 원격 서버에서 RPi로 mp3 파일 전송

  20. 20

    파일 클라이언트를 통해 원격 서버에 연결

  21. 21

    Tab 키가 VS 코드에서 들여 쓰기되지 않음

  22. 22

    원격 분기를 삭제해도 GitHub에서 제거되지 않습니다.

  23. 23

    cygwin이 원격 시스템에 설치되지 않은 경우 Java를 사용하여 원격 Windows 시스템에 연결

  24. 24

    NAT 뒤의 원격 서버를 통해 원격 컴퓨터에 액세스하기

  25. 25

    미러 베어 원격을 통해 원격에서 모든 분기를 당겨

  26. 26

    팀 탐색기에 원격 지점이 표시되지 않음

  27. 27

    SSH를 통해 원격 Ubuntu 시스템에 로그인 할 수 없음-연결이 거부되었습니다.

  28. 28

    ssh를 통해 원격 서버를 재부팅 할 때 bash 스크립트가 예기치 않게 종료 됨

  29. 29

    ssh를 통해 원격 서버를 재부팅 할 때 bash 스크립트가 예기치 않게 종료 됨

뜨겁다태그

보관