基于java開(kāi)發(fā)小程序接口,后臺使用ueditor編輯圖文內容。
小程序如何顯示富文本內容呢?
一、直接傳入html
nodes 屬性推薦使用 Array 類(lèi)型,由于組件會(huì )將 String 類(lèi)型轉換為 Array 類(lèi)型,因而性能會(huì )有所下降
直接將html內容傳入是可以,但是無(wú)論從性能還是顯示樣式來(lái)說(shuō)都會(huì )有問(wèn)題,所以不推薦這樣做。
二、wxParse
網(wǎng)上現在較多的解決方法都是在小程序里引入wxParse插件來(lái)解決。
考慮到引入額外的插件會(huì )使得程序變大,所以就沒(méi)有詳細研究,有興趣的可以自行百度。
三、解析成json
public class RichTextParse {public static List<Object> parse(String body) throws DocumentException {List<Object> nodes = new ArrayList<Object>();Document doc = null;doc = DocumentHelper.parseText("<xml>" + body + "</xml>"); // 將字符串轉為XMLElement rootElt = doc.getRootElement(); // 獲取根節點(diǎn)List<Element> list = rootElt.elements();// 獲取根節點(diǎn)下所有節點(diǎn)for (Element element : list) { // 遍歷節點(diǎn)RichTextNode node = new RichTextNode();node.setName(element.getName());// attrsfor (Iterator it = element.attributeIterator(); it.hasNext();) {Attribute attr = (Attribute) it.next();node.getAttrs().put(attr.getName(), attr.getText());}// has childrenif (!element.isTextOnly()) {loopElement(node, element);} else {RichTextNodeText nodeText = new RichTextNodeText();nodeText.setType("text");nodeText.setText(element.getText());node.getChildren().add(nodeText);}// add to nodesnodes.add(node);}return nodes;}private static void loopElement(RichTextNode nodeParent, Element elementParent) {List<Element> eles = elementParent.elements();for (Element element : eles) {RichTextNode node = new RichTextNode();node.setName(element.getName());// attrsfor (Iterator it = element.attributeIterator(); it.hasNext();) {Attribute attr = (Attribute) it.next();node.getAttrs().put(attr.getName(), attr.getText());}//switch (element.getName()) {case "img":node.getAttrs().put("style", "max-width:100%;height:auto;");break;default:break;}// has childrenif (!element.isTextOnly()) {loopElement(node, element);} else {RichTextNodeText nodeText = new RichTextNodeText();nodeText.setType("text");nodeText.setText(element.getText());node.getChildren().add(nodeText);}// add to parent nodenodeParent.getChildren().add(node);}}}
public class RichTextNode {private String name;private HashMap<String, String> attrs;private List<Object> children;public RichTextNode() {super();this.attrs = new HashMap<String, String>();this.children = new ArrayList<Object>();}public String getName() {return name;}public void setName(String name) {this.name = name;}public HashMap<String, String> getAttrs() {return attrs;}public void setAttrs(HashMap<String, String> attrs) {this.attrs = attrs;}public List<Object> getChildren() {return children;}public void setChildren(List<Object> children) {this.children = children;}}
public class RichTextNodeText {private String type;private String text;public String getType() {return type;}public void setType(String type) {this.type = type;}public String getText() {return text;}public void setText(String text) {this.text = text;}}
這里測試了簡(jiǎn)單的圖文編輯沒(méi)有問(wèn)題(html層級只有2層),暫未測試更復雜的多層嵌套的html(例如直接復制網(wǎng)頁(yè)內容粘貼過(guò)來(lái))。
后續發(fā)現將html當成簡(jiǎn)單xml來(lái)解析只能處理簡(jiǎn)單的內容,最后改成jsoup來(lái)解析
http://www.cn-dianji.com/article_90.html
- 版權所有:奇站網(wǎng)絡(luò ) 轉載請注明出處
- 廈門(mén)奇站網(wǎng)絡(luò )科技有限公司,專(zhuān)業(yè)提供網(wǎng)站建設,響應式網(wǎng)站建設,小程序開(kāi)發(fā),系統定制開(kāi)發(fā)。
- 軟件開(kāi)發(fā)咨詢(xún)熱線(xiàn):吳小姐 13313868605
