2012-07-15 2 views
2

필자의 Perl 프로그램이 XML 파일을 처리 중이다. 일부 항목은 & 개의 기호를 포함 할 수 있습니다. 파서가 깨지면서 "엔티티에 잘못된 이름이 있습니다."XML로 인 코드 & 심볼

파일을 처리하고 모든 잘못된 엔터티에서 & -s를 인코딩하려면 어떻게해야합니까? 그것은 일반적으로, 까다로운 아닌 사소한, 그리고

<words>text1 & text2</words> --> <words>text1 &amp; text2</words> 
+0

파일을 직접 수정하거나 프로그램에서 잘못 구성된 XML을 지원 하시겠습니까? –

+0

직접 작성한 형식이 아닌 XML을 지원하고 싶습니다. 유효한 XML로 만들기. – user4035

+0

XML :: LibXML을 사용한다면'recover' 파서 옵션을 사용하면 이러한 오류를 무시할 수 있다고 생각합니다. – ikegami

답변

3

장단점을 포함한다 :

그래서,이 같은 것입니다. 유사한 문제가 발생했을 때 &자를 대문자 또는 공백 (정규 표현식의 /\&[A-Z ]/)을 대체하고 &amp; (및 "후행 문자")을 사용하면 대부분의 경우를 해결할 수 있습니다. well-formed XML 입력을 받아들임으로써 여분의 마일을 얻는다.

+0

XML에서 '& A;'와 같은 사내 문자를 선언하는 것은 합법적입니다. 문서를 XML로 변환하는 더 좋은 방법은 '&'뒤에 유효한 엔티티 이름이 될 수 없다는 부정적인 주장을 사용하는 것입니다 . & /'이것은 XML 표준에서 모든 유니 코드 사례를 잡아 내지는 못하지만, 기본적으로 충분히 유사합니다. –

6

XML 파일이 아닙니다. XML 인 경우 &&amp;으로 기록됩니다. XML 파서를 사용할 수 없기 때문에 비 XML 파일을 처리하는 것은 어렵습니다. 이 파일을 만든 프로그램을 수정하여 올바른 형식의 XML을 생성하도록 변경하는 것이 가장 좋습니다.