// Used in code snippet 1. static void ProcessStructElement(SElement element, int indent) { if (!element.IsValid()) { return; } // Print out the type and title info, if any. PrintIndent(indent++); Console.Write("Type: " + element.GetType()); if (element.HasTitle()) { Console.Write(". Title: " + element.GetTitle()); } int num = element.GetNumKids(); for (int i = 0; i < num; ++i) { // Check is the kid is a leaf node (i.e. it is a ContentItem). if (element.IsContentItem(i)) { ContentItem cont = element.GetAsContentItem(i); ContentItem.Type type = cont.GetType(); Page page = cont.GetPage(); PrintIndent(indent); Console.Write("Content Item. Part of page #" + page.GetIndex()); PrintIndent(indent); switch (type) { case ContentItem.Type.e_MCID: case ContentItem.Type.e_MCR: Console.Write("MCID: " + cont.GetMCID()); break; case ContentItem.Type.e_OBJR: { Console.Write("OBJR "); Obj ref_obj = cont.GetRefObj(); if (ref_obj != null) { Console.Write("- Referenced Object#: " + ref_obj.GetObjNum()); } } break; default: break; } } else // the kid is another StructElement node. { ProcessStructElement(element.GetAsStructElem(i), indent); } } }
/** * <p>parseContentList.</p> * * @param text a {@link java.lang.String} object. * @throws iqq.im.QQException if any. */ public void parseContentList(String text) { try { JSONArray json = new JSONArray(new JSONTokener(new StringReader(text))); for (int i = 0; i < json.length(); i++) { Object value = json.get(i); if (value is JSONArray) { JSONArray items = (JSONArray)value; ContentItem.Type type = (ContentItem.Type)Enum.Parse(typeof(ContentItem.Type), items.getString(0), true); switch (type) { case ContentItem.Type.FACE: addContentItem(new FaceItem(items.ToString())); break; case ContentItem.Type.FONT: addContentItem(new FontItem(items.ToString())); break; case ContentItem.Type.CFACE: addContentItem(new CFaceItem(items.ToString())); break; case ContentItem.Type.OFFPIC: addContentItem(new OffPicItem(items.ToString())); break; default: break; } } else if (value is String) { addContentItem(new TextItem((String)value)); } else { throw new QQException(QQWpfApplication1.action.QQException.QQErrorCode.UNKNOWN_ERROR, "unknown msg content type:" + value.ToString()); } } } catch (JSONException e) { throw new QQException(QQWpfApplication1.action.QQException.QQErrorCode.JSON_ERROR, e); } }