2012-03-16 3 views
1

XML 문서를 처리하고 거기에서 값을 읽습니다. 읽는 가치 중 하나는/안에 있습니다. 값이 표시되는 방식은 M/S John Smith At 4입니다. 나는 에뮬레이터에 대한 테스트를하고 있었고 올바른 값을 보여주었습니다. 이제 내 Samsung Galaxy S2 device에 내 애플 리케이션을 배포하고 프로세스가 값을 올바르게 읽고 있지 않습니다. 그 이름의 값 필드에 M이 표시됩니다.장치에서 "/"를 읽을 수 없습니다.

특수 문자이기 때문에 가능하다고 생각하고 있습니다. 값에서 특수 문자를 이스케이프 처리하고 전체 이름을 그대로 읽을 수있는 방법이 있습니까?

추신 : 저는 경험 많은 Java 개발자가 아니므로이 질문은 당신에게 어리석게 들릴지 모르지만 해결책이 있다면 알려주십시오. M/S John Smith At 4

이 기능은 값을 읽 다음 adove 기능에

public static String getCharacterDataFromElement(Element e) { 
     Node child = e.getFirstChild(); 
     if (child instanceof CharacterData) { 
      CharacterData cd = (CharacterData) child; 
      return cd.getData(); 
     } 
     return ""; 
     } 

, cd.getdata() 그것을 구문 분석 후 XMLDocument로 읽 방법

내가 콘솔 창에 값을 인쇄하고

이있다

난 시계 창에서 요소를 참조 F : 좀 더 디버깅 후 M

을 반환 또는 다른 이름에는 단 하나의 자식 만 있습니다. 하지만 포함 된 요소에는/3 명의 자녀가 있습니다. 그것은 보이는/bcz stringbuffer bcz 슬라이스. 나는 아래 함수를 변경하고 모든 자식 노드를 준비해야하거나 내가 전달하기 전에 거기에서 이스케이프 문자를 사용해야한다고 생각한다.

+1

이것은 흥미로운 문제처럼 들립니다. "M"만 추출하는 코드를 게시 할 수 있습니까? – mfrankli

+0

@mfrankli : 편집을 참조하십시오. – Asdfg

+0

짐작할 수 있듯이 '/'는 특수 문자입니다. /은 '/'의 ascii 값 47을 나타냅니다. 여기의 비틀기는 에뮬레이터에서 작동하지만 장치에서는 작동하지 않는다는 점은 놀랍지 만 좋은 대답은 아닙니다. 최대한 간단히 작동 시키려면 CharacterData – mfrankli

답변

0

이 새로운 방법은 지금 모습입니다 : 지금이이 작동의로

public static String getCharacterDataFromElement(Element e) { 
    return e.getTextContent(); 
    } 

. 내가 얼마나 오래지만 잘하면 내가 옳은 일을하고 하위 노드를 반복하고 문자열 값을 연결하기로 결정할 때까지 모르겠다.

1

텍스트 노드에 대해 이야기 할 경우 NodegetNodeValue()을 사용해 보셨습니까?

public static String getCharacterDataFromElement(Element e) 
{ 
    Node child = e.getFirstChild(); 
    return child.getNodeValue(); 
} 

문서 : http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Node.html#getNodeValue%28%29

+0

예.나는 그것을 시도했다. 같은 결과. Bcz/기호, 해당 노드에는 3 명의 자식이 있습니다. 나는/문자를 벗어나야한다고 생각한다. – Asdfg

+0

e.getTextContent(); 올바른 데이터를 제공하는 것입니다. – Asdfg

관련 문제