• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

作業部屋の使い方を試しています。


Commit MetaInfo

Revision56 (tree)
Time2014-07-29 08:58:49
Authortuna_p

Log Message

HTML属性の取得方法を考える。

Change Summary

Incremental Difference

--- branches/HtmlTest2-b1/src/Lib/AttributeData.java (revision 55)
+++ branches/HtmlTest2-b1/src/Lib/AttributeData.java (revision 56)
@@ -16,6 +16,9 @@
1616 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
1717 * MA 02110-1301 USA
1818 */
19+/*
20+ * $Id$
21+ */
1922
2023 package Lib;
2124
@@ -32,6 +35,7 @@
3235
3336 public AttributeData() {
3437 AttrList = new ArrayList();
38+ size = 0;
3539 }
3640
3741 public void add(HTML.Tag tag, MutableAttributeSet attr) {
@@ -47,9 +51,10 @@
4751 a.tag = tag;
4852 a.count = tagcount;
4953 a.attrname = obj.toString();
50- a.attrvalue = (String)attr.getAttribute(obj);
54+ a.attrvalue = attr.getAttribute(obj).toString();
5155
5256 AttrList.add(a);
57+ size = AttrList.size();
5358 }
5459
5560 }
@@ -112,6 +117,27 @@
112117 return wkcnt;
113118 }
114119
120+ // AttrList の内容を返すメソッド
121+ public HTML.Tag gettag(int i) {
122+ AttrData a = (AttrData)AttrList.get(i);
123+ return a.tag;
124+ }
125+
126+ public int getcount(int i) {
127+ AttrData a = (AttrData)AttrList.get(i);
128+ return a.count;
129+ }
130+
131+ public String getattrname(int i) {
132+ AttrData a = (AttrData)AttrList.get(i);
133+ return a.attrname;
134+ }
135+
136+ public String getattrvalue(int i) {
137+ AttrData a = (AttrData)AttrList.get(i);
138+ return a.attrvalue;
139+ }
140+
115141 // フィールド変数
116142 public class AttrData {
117143 public HTML.Tag tag;
@@ -120,5 +146,6 @@
120146 public String attrvalue;
121147 }
122148 public ArrayList AttrList;
149+ public int size; // AttrListのサイズ
123150
124151 }
--- branches/HtmlTest2-b1/src/Lib/HtmlParserCallback.java (revision 55)
+++ branches/HtmlTest2-b1/src/Lib/HtmlParserCallback.java (revision 56)
@@ -23,7 +23,6 @@
2323 package Lib;
2424
2525 import java.util.ArrayList;
26-import java.util.Enumeration;
2726 import java.util.HashMap;
2827 import javax.swing.text.MutableAttributeSet;
2928 import javax.swing.text.html.HTML;
@@ -36,7 +35,8 @@
3635 public class HtmlParserCallback extends HTMLEditorKit.ParserCallback {
3736
3837 // デバック情報表示フラグ
39- final boolean DEBUG = false;
38+ //final boolean DEBUG = false;
39+ final boolean DEBUG = true;
4040
4141 // Tag毎の階層
4242 HashMap<HTML.Tag,Integer> tagMap = new HashMap<>();
@@ -56,6 +56,9 @@
5656 // serach key と一致時のデータ一覧
5757 ArrayList sData;
5858
59+ // 属性データ
60+ AttributeData attrdata;
61+
5962 public HtmlParserCallback(SearchData skey) {
6063
6164 // キー情報展開
@@ -80,24 +83,21 @@
8083 }
8184 tagMap.put(tag, count);
8285
86+ // 属性解析
87+ AttributeData handleStartattrdata = new AttributeData();
88+ handleStartattrdata.add(tag, attr);
89+
8390 //--- DEBUG OUT ---- start ---
8491 if(DEBUG) {
8592 StringBuffer strBuf = new StringBuffer();
86- String ret;
87-
93+ // tag情報
8894 strBuf.append(count).append(" : F : ").append(tag.toString());
89- ret = (String)attr.getAttribute(HTML.Attribute.ID);
90- if(ret != null) {
91- strBuf.append(" [ID] ").append(ret);
95+ // 属性情報
96+ for(int i = 0; i < handleStartattrdata.size; i++) {
97+ strBuf.append(" [").append(handleStartattrdata.getattrname(i)).append("] ")
98+ .append(handleStartattrdata.getattrvalue(i));
9299 }
93- ret = (String)attr.getAttribute(HTML.Attribute.CLASS);
94- if(ret != null) {
95- strBuf.append(" [CLASS] ").append(ret);
96- }
97- ret = (String)attr.getAttribute(HTML.Attribute.VALUE);
98- if(ret != null) {
99- strBuf.append(" [VALUE] ").append(ret);
100- }
100+ // 表示
101101 System.out.println(strBuf);
102102 }
103103 //--- DEBUG OUT ---- end ---
@@ -109,9 +109,14 @@
109109 bufTag = tag;
110110 bufAttr = attr;
111111 bufText = new StringBuilder();
112+
113+ attrdata = new AttributeData();
112114 }
113115 }
114116 }
117+ if(bufCount > 0) {
118+ attrdata.add(tag, attr);
119+ }
115120 }
116121
117122 @Override
@@ -124,7 +129,21 @@
124129
125130 //--- DEBUG OUT ---- start ---
126131 if(DEBUG) {
127- System.out.println(count + " : E : " + tag.toString());
132+ if(tag.equals(bufTag) && count <= bufCount) {
133+ for(int i = 0; i < attrdata.size; i++) {
134+ StringBuffer strBuf = new StringBuffer();
135+ strBuf.append(" Tag-attr : ");
136+ strBuf.append(attrdata.gettag(i)).append(" [ ");
137+ strBuf.append(attrdata.getcount(i)).append(" ] ");
138+ strBuf.append(attrdata.getattrname(i)).append(" = ");
139+ strBuf.append(attrdata.getattrvalue(i));
140+ System.out.println(strBuf);
141+ }
142+ }
143+ StringBuffer strBuf = new StringBuffer();
144+ // tag情報
145+ strBuf.append(count).append(" : E : ").append(tag.toString());
146+ System.out.println(strBuf);
128147 }
129148 //--- DEBUG OUT ---- end ---
130149
@@ -174,21 +193,26 @@
174193
175194 @Override
176195 public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attr, int pos){
196+
197+ if(bufCount > 0) {
198+ attrdata.add(tag, attr);
199+ }
200+
177201 //--- DEBUG OUT ---- start ---
178202 if(DEBUG) {
203+ AttributeData simpleattrdata = new AttributeData();
204+ simpleattrdata.add(tag, attr);
179205 StringBuffer strBuf = new StringBuffer();
180- String ret;
206+ // tag情報
181207 strBuf.append("x : S : ").append(tag.toString());
182- ret = (String)attr.getAttribute(HTML.Attribute.VALUE);
183- if(ret != null) {
184- strBuf.append(" [VALUE] ").append(ret);
208+ // 属性情報
209+ for(int i = 0; i < simpleattrdata.size; i++) {
210+ strBuf.append(" [").append(simpleattrdata.getattrname(i)).append("] ").append(simpleattrdata.getcount(i))
211+ .append(" = ").append(simpleattrdata.getattrvalue(i));
185212 }
186213 System.out.println(strBuf);
187214 }
188215 //--- DEBUG OUT ---- end ---
189-
190- //ParseMutableAttributeSet(attr);
191-
192216 }
193217
194218 /**
@@ -220,19 +244,4 @@
220244
221245 return false;
222246 }
223-
224- public void ParseMutableAttributeSet(MutableAttributeSet attr) {
225- Enumeration e = attr.getAttributeNames();
226- while(e.hasMoreElements()) {
227- Object obj = e.nextElement();
228- String attributename = obj.toString();
229- System.out.print(attributename + "\t");
230-
231- String ret = (String)attr.getAttribute(obj);
232- System.out.println(ret);
233-
234- }
235-
236- }
237-
238247 }