小(xiǎo)程序rich-text組件,解析html——廈門小(xiǎo)程序開發,泉州小(xiǎo)程序開發,漳州小(xiǎo)程序開發

  1. 新(xīn)聞資訊
  2. 技(jì )術百科(kē)
行業動态 公(gōng)司新(xīn)聞 案例分(fēn)享 技(jì )術百科(kē)

小(xiǎo)程序rich-text組件——html解析

來源:奇站網絡 浏覽量:2917 發布日期: 2018-03-08

基于java開發小(xiǎo)程序接口,後台使用(yòng)ueditor編輯圖文(wén)内容。
小(xiǎo)程序如何顯示富文(wén)本内容呢(ne)?

一、直接傳入html

nodes 屬性推薦使用(yòng) Array 類型,由于組件會将 String 類型轉換為(wèi) Array 類型,因而性能(néng)會有(yǒu)所下降

直接将html内容傳入是可(kě)以,但是無論從性能(néng)還是顯示樣式來說都會有(yǒu)問題,所以不推薦這樣做。

二、wxParse

網上現在較多(duō)的解決方法都是在小(xiǎo)程序裏引入wxParse插件來解決。
考慮到引入額外的插件會使得程序變大,所以就沒有(yǒu)詳細研究,有(yǒu)興趣的可(kě)以自行百度。

三、解析成json

  1. public class RichTextParse {
  2. public static List<Object> parse(String body) throws DocumentException {
  3. List<Object> nodes = new ArrayList<Object>();
  4. Document doc = null;
  5. doc = DocumentHelper.parseText("<xml>" + body + "</xml>"); // 将字符串轉為(wèi)XML
  6. Element rootElt = doc.getRootElement(); // 獲取根節點
  7. List<Element> list = rootElt.elements();// 獲取根節點下所有(yǒu)節點
  8. for (Element element : list) { // 遍曆節點
  9. RichTextNode node = new RichTextNode();
  10. node.setName(element.getName());
  11. // attrs
  12. for (Iterator it = element.attributeIterator(); it.hasNext();) {
  13. Attribute attr = (Attribute) it.next();
  14. node.getAttrs().put(attr.getName(), attr.getText());
  15. }
  16. // has children
  17. if (!element.isTextOnly()) {
  18. loopElement(node, element);
  19. } else {
  20. RichTextNodeText nodeText = new RichTextNodeText();
  21. nodeText.setType("text");
  22. nodeText.setText(element.getText());
  23. node.getChildren().add(nodeText);
  24. }
  25. // add to nodes
  26. nodes.add(node);
  27. }
  28. return nodes;
  29. }
  30. private static void loopElement(RichTextNode nodeParent, Element elementParent) {
  31. List<Element> eles = elementParent.elements();
  32. for (Element element : eles) {
  33. RichTextNode node = new RichTextNode();
  34. node.setName(element.getName());
  35. // attrs
  36. for (Iterator it = element.attributeIterator(); it.hasNext();) {
  37. Attribute attr = (Attribute) it.next();
  38. node.getAttrs().put(attr.getName(), attr.getText());
  39. }
  40. //
  41. switch (element.getName()) {
  42. case "img":
  43. node.getAttrs().put("style", "max-width:100%;height:auto;");
  44. break;
  45. default:
  46. break;
  47. }
  48. // has children
  49. if (!element.isTextOnly()) {
  50. loopElement(node, element);
  51. } else {
  52. RichTextNodeText nodeText = new RichTextNodeText();
  53. nodeText.setType("text");
  54. nodeText.setText(element.getText());
  55. node.getChildren().add(nodeText);
  56. }
  57. // add to parent node
  58. nodeParent.getChildren().add(node);
  59. }
  60. }
  61. }
  1. public class RichTextNode {
  2. private String name;
  3. private HashMap<String, String> attrs;
  4. private List<Object> children;
  5. public RichTextNode() {
  6. super();
  7. this.attrs = new HashMap<String, String>();
  8. this.children = new ArrayList<Object>();
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public HashMap<String, String> getAttrs() {
  17. return attrs;
  18. }
  19. public void setAttrs(HashMap<String, String> attrs) {
  20. this.attrs = attrs;
  21. }
  22. public List<Object> getChildren() {
  23. return children;
  24. }
  25. public void setChildren(List<Object> children) {
  26. this.children = children;
  27. }
  28. }
  1. public class RichTextNodeText {
  2. private String type;
  3. private String text;
  4. public String getType() {
  5. return type;
  6. }
  7. public void setType(String type) {
  8. this.type = type;
  9. }
  10. public String getText() {
  11. return text;
  12. }
  13. public void setText(String text) {
  14. this.text = text;
  15. }
  16. }

這裏測試了簡單的圖文(wén)編輯沒有(yǒu)問題(html層級隻有(yǒu)2層),暫未測試更複雜的多(duō)層嵌套的html(例如直接複制網頁(yè)内容粘貼過來)。

後續發現将html當成簡單xml來解析隻能(néng)處理(lǐ)簡單的内容,最後改成jsoup來解析
/article_90.html

标簽:

廈門奇站網絡科(kē)技(jì )有(yǒu)限公(gōng)司

電(diàn)話:13313868605

QQ:3413772931

地址:廈門集美區(qū)軟件園三期


                    掃一掃加我咨詢

少妇BBB搡BBB搡BBB www.黄色 办公室的丰满秘书CD 刚开始拒绝后来慢慢接受视频 艳肉乱痕1一12章精汁欲液 爽灬爽灬爽灬毛及A片 王局长扛着白洁两条雪白大腿视频 少女たちよ观看动漫第四季 亚洲AV无码乱码精品国产 成人性生交大片免费看96 兄妹开荒视频完整版免费观看 成全在线观看高清完整版免费动漫 无码成人AAAAA毛片AI换脸 国产破苞第一次 国产做爰又粗又大太疼了 星星影院在线观看免费版电视剧 出差征服艳人妻HD 男人扒开腿狂躁女人爽小说 女保险公司推销员5中字 性饥渴寡妇肉乱2 姐姐在线观看免费韩剧 免费AV网站 久久久天堂国产精品女人 善良的少妇伦理BD中字 国产精品久久久久久妇女6080 大地资源二3在线观看免费高清 甜蜜惩罚我是看守专用宠12集 粉嫩小泬BBBB免费看 亚洲国产成人精品女人久久久 梁教授要稳住肉馅小水饺视频 樱花电影大全免费观看西瓜 最好看的中文字幕国语电影 8848高清电影电视剧免费看 少女大人免费观看电视剧1 中国老熟女重囗味HDXX 17岁中国高清免费完整版 诱人的妺妺2 在线高清电视观看免费视频 少妇4做爰电影 艳肉乱痕1一12章精汁欲液 青青河边草免费高清电影 片多多电影电视剧影视剧三年 4399在线观看免费高清电视剧 国产熟妇搡BBBB搡BBBB 欧美性A片人与善交A片 性少妇VIDEOSEXFREEXXXX片 双腿张开被5个男人调教电影 国产肥白大熟妇BBBB视频 妻子的秘密免费版电视剧大全 欧洲尺码日本尺码美国欧洲LV