2010-01-25 6 views
1

은 내가 구문 분석하고 XML 파일을 가지고 있고 다음과 같은 태그가 텍스트 노드에 자식으로 해석되고 앰퍼샌드있다은 왜 ...

<desc> 
/wap/news/text.jsp?sid=242&nid=5662369&cid=5038&scid=-1 
</desc> 

나는이 XML의 형식을 제어 할 수 없습니다 파일을 만들었지 만 desc URL 내용을 부분 URL로 해석해야만 나중에 기본 URL에 추가하고 새 파일을 검색합니다.

나는 이것을 내림차순 태그는 한 아이의 값을 가지는 텍스트 노드를 가지고 분석

...

/wap/news/text.jsp?sid=242 

하지만 라인의 나머지 부분과 위의 텍스트 노드에 6 개 자식 노드로 구문 분석 값 ...

& 
nid=5662369 
& 
cid=5038 
& 
scid=-1 

어떻게 파서 대접이 아니라 단지 하나의 텍스트 노드를 어떻게해야합니까하지 자식 노드와 '&'기호를 해석한다.

관련 구문 분석 코드는 다음과 같습니다.

HttpConnection c = (HttpConnection) Connector.open(inURL.toString(), Connector.READ); 
is = c.openInputStream(); 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setIgnoringElementContentWhitespace(true); 
factory.setAllowUndefinedNamespaces(true); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
document = builder.parse(is); 

이것은 블랙 베리의 J2ME 코드이므로 사용 가능한 API에 대해서는 상당히 제한적입니다.

+0

수정 : 라인의 나머지가되지 않는 속성으로 해석되지만 자식 노드로 해석됩니다. –

답변

3

&은 XML의 특수 문자입니다. &amp;으로 이스케이프해야합니다.

뭔가가 위의 텍스트 파일을 생성하는 경우 유효한 XML을 생성하지 못합니다.

+1

유효하거나 가끔 우리는 우리가 가진 것을 다루지 못하고 있습니다. – whatnick

+3

추측 해 보겠습니다. 누군가 적절한 XML 라이브러리를 사용하는 대신 수동으로이 psuedo-XML을 작성하기로 결정 했습니까? 그리고 이제 그 결과로 살아야합니까? 어쨌든 XML 파서를 사용하여 XML을 파싱 할 필요가 있다면 파서에 입력하기 전에 관련된 '&'를 '&'으로 바꿀 수 있습니다. –

+0

@whatnick - XML ​​파서가 무의미한 XML로 합리적인 판단을 내릴 것으로 기대하는 것은 Java 컴파일러가 C를 사용하여 합리적인 판단을 내릴 것으로 기대하는 것과 비슷합니다. –

0

우선, 원래 XML 코드가 유효하지 않은 XML입니다. 이것이 실패 할 수도 있습니다. 둘째, Java는 기본적으로 조각난 텍스트 컨텐츠를 통합하지 않습니다. 나는이의 세부 사항에 대한 블로그 항목을 작성하고있다 당신은 구문 분석 공장에 속성을 설정하여 다른 텍스트 노드를 병합 할 수있는 방법 :

http://www.drillio.com/en/software-development/java/fragmented-xml-text-nodes/

관련 문제