2010-01-09 3 views
1

자바에서 StaX를 사용하여 XML을 파싱하고 있지만 XML이 올바른 형식이 아니므로 파서가 오류를 발생시킵니다.자바에서 클로즈드 태그 XML을 수정하는 방법

<person> 
    <name>John</name> 
    <age>21 
    ... 
    ... 
</person> 

<age> 태그가 닫힌하지 않는 태그 </age> : XML에서 닫히지 않은-태그 예를 들어

이있다. 그래서 XML을 먼저 고쳐야합니다.

닫히지 않은 태그를 닫기 위해 XML을 어떻게 수정할 수 있습니까?

이 작업을 수행 할 라이브러리가 있습니까? 나는 JTidy & HTMlCleaner를 시도했지만 여전히 XML을 수정하는 방법을 알 수 없다. Java에서 라이브러리가 필요합니다. 독립형 앱이 아닙니다. 감사합니다.

+0

항상 나이입니까? – extraneon

+0

아니요, 제가 확인했을 때 닫힌 태그가없는 다른 태그가 있다는 것을 발견했습니다. – Riizent

+0

수정 : 예, 지금은 태그가 하나만 닫혀 있습니다. 죄송합니다. 이전 답변에 대해 다른 문제가 섞여 있습니다. – Riizent

답변

7

XML을 수정할 준비가 된 솔루션이 없다고 생각합니다. 이

<person> 
    <name>John</name> 
    <age>21 
    <birthDate>...</birthDate> 
    ... 
</person> 

<person> 
    <name>John</name> 
    <age>21 
    <birthDate>...</birthDate> 
    </age> 
    ... 
</person> 

또는

<person> 
    <name>John</name> 
    <age>21</age> 
    <birthDate>...</birthDate> 
    ... 
</person> 

내가 논리의 종류 만 사용자 정의 문자열 파서, 당신을 처리 할 수 ​​있다고 생각 수 있는지 알고 불가능하기 때문이다 데이터가 어떻게 변형 될 수 있는지 말하십시오.

+0

그래서 닫으려면 Riizent

+0

나는 HTMLCleaner/tidy가 HTML 형식이지만 XML은 할 수 없다는 것을 읽었습니다 .HtmlCleaner가 어떻게하는지 또는 어쩌면 궁금합니다. 그것을 수정하십시오. – Riizent

0

대신 XML을 고정의 경우와 검증의 설정을 시도 할 수 있습니다 :

XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
inputFactory.setProperty(XMLInputFactory.IS_VALIDATING, false); 
+0

그것은 여전히 ​​오류가 발생하고 계속 구문 분석 할 수 없습니다 .JAadoc을 읽을 때 IS_VALiDATING은 DTD 유효성 검사입니다. – Riizent

+0

"유효"는 "형식이 올바른"것이 아닙니다. – kdgregory

4

는 XML을 생성 한 사람을 찾아 무감각 한 그들을 이길.

XML의 기본 점은 문서가 항상 올바른 형식임을 나타냅니다. 이것은 매우 쉽고, 쉽고, 테스트하기 쉽고, 다른 모든 것을위한 기초가됩니다. 프로그래머가 되어서도 안되는 코드를 작성하는 사람도 있습니다. 진지하게, 그들은 햄버거를 뒤집거나 대신에 도랑을 파야합니다.

자신의 진절머리 난 코드를 처리하기위한 코드를 작성하는 것은 장기적인 해결책이 아닙니다. 그들의 진절머리 난 코드의 문제를 해결하기 위해 아무 것도하지 않습니다.

감사합니다. 아마도 도움이되지 않을 것입니다.

+0

YAML로 전환하도록 알려주십시오. 그 성가신 태그를 닫습니다. –

관련 문제