2009-09-02 3 views
0

libxml2의 SAX2 인터페이스를 사용하는 코드가 있습니다. 엔티티 참조가 아닌 문자로 < 엔티티 참조를 볼 수 있기를 원하지만, 내가 무엇을해도 libxml2는 &lt;을 <으로 바꾼 다음 참조 콜백 대신 내 문자 콜백으로 전달합니다.libxml2의 SAX2 인터페이스를 통해 < 등을 볼 수있는 방법은 무엇입니까?

libxml2가 기본 미리 정의 된 엔티티에 대한 참조 콜백을 강제로 호출 할 수있는 방법에 대한 아이디어가 있습니까?

답변

1

이 작업을 수행 할 수 없습니다. LibXML은 노드의 문자열 내용을 반환하며 문자는 <입니다. 문자열에 &lt;을 포함 시키려면 원본 XML에 &amp;lt;이 있어야합니다.

출력을 다른 XML 문서에만 적용해야한다면이 모듈을 호출하여 HTML::Entities과 같은 모듈을 호출 해보십시오.

+0

그러나 libxml2 SAX 문서에서는 참조 콜백을 통해 변경되지 않은 엔티티 참조를 전달하도록 선택할 수 있다고 나와 있습니다. 일부 엔티티에서는이 작업을 수행하고 다른 엔티티에서는 수행하지 않는 것이 이상하게 보입니다. – Benno

+0

XML은 일부 엔터티를 다른 엔터티와 다르게 처리합니다. 사양에 따르면 숫자 문자 엔티티는 즉시 확장되어야하지만 (http://www.xml.com/axml/target.html#sec-predefined-ent) 사전 정의 된 엔티티는 명시 적으로 언급하지 않습니다. 아마도 나쁜 세미콜론의 경우입니다. http://www.xml.com/axml/target.html#sec-entexpand를 참조하십시오. – kdgregory

관련 문제