きのう、Excelでstruts-configのform-beanを解析して、一覧に出すことをしました。
で、今日は、action
なのですが、Excelでやるのなら、ただ、form-beanのところを、actionにかえて、
select caseのところを、actionで表示したい属性にかえる(追加する)だけなので、
そんなに面白くありません。
そこで、Javaでactionを解析して、Actionの属性
"name","type","path","input","scope","validate"
をカンマ区切りで順に出すことにしました。
こんなかんじ。
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class StrutsCheck { /* * Actionタグ内で出力する属性 */ public static final String[] chkWord = {"name","type","path","input","scope","validate"}; /* * セル区切る */ public static final String kugiri = ","; /* * レコード区切り */ public static final String recend = "¥r¥n"; public static void main(String[] args) { // 引数チェック if ( args.length < 1 ) { System.out.println("引数:struts-config.xmlのパス"); return; } // XMLオープン DocumentBuilderFactory dbf; DocumentBuilder bl; Document doc; try { dbf = DocumentBuilderFactory.newInstance(); bl = dbf.newDocumentBuilder(); doc = bl.parse(new File(args[0])); } catch(Exception e) { e.printStackTrace(); return; } // actionをget NodeList actionList = doc.getElementsByTagName("action"); for(int i = 0 ; i < actionList.getLength(); i++) { //1アクション分処理 Node action = actionList.item(i); NamedNodeMap attr = action.getAttributes(); Node item = null; String val = ""; for ( int j = 0 ; j < chkWord.length ; j ++ ) { //1アトリビュート分処理 item = attr.getNamedItem(chkWord[j]); if ( j != 0 ) { System.out.print(kugiri); } if ( item != null ) { val = item.getNodeValue(); if ( val == null ) val = ""; System.out.print(val); } else { System.out.print(val); } } System.out.print(recend); } } } |
(上記< > ¥は、本当は半角です)
起動する時は、
java StrutsCheck C:/temp/struts-config.xml
といったかんじで、引数にstruts-config.xmlがあるパスを指定してください。
ここから先は、気が向いたら・・・