2009-09-02 39 views
0

我有一些使用libxml2的SAX2接口的代碼。我希望能夠將<類型實體看作實體引用而不是字符,但看起來無論我做什麼,libxml2都會將&lt;變成<,然後將其交給我的角色回調,而不是調用我的引用回調。如何獲取libxml2的SAX2接口讓我看到<等?

有關如何強制libxml2爲基本預定義實體調用引用回調的任何想法?

回答

1

你不能這樣做。 LibXML返回節點的字符串內容,這是一個文字<。如果你想讓你的字符串包含&lt;那麼你的原始XML需要包含&amp;lt;

如果你想進一步轉義(你應該只對另一個XML文檔輸出),可以嘗試調用一個像HTML::Entities這樣的模塊來完成這項工作。

+0

但libxml2 SAX文檔聲明,您可以選擇通過您的引用回調來傳遞實體引用。看起來奇怪的是,它會對一些實體而不是其他人實現。 – Benno 2009-09-02 23:04:53

+0

XML對待某些實體的方式與其他實體不同。該規範提到數字字符實體必須立即展開(http://www.xml.com/axml/target.html#sec-predefined-ent),但不明確提及預定義的實體;可能是一個壞分號的情況。另請參閱http://www.xml.com/axml/target.html#sec-entexpand – kdgregory 2009-09-04 12:11:00