Java: 2008年4月アーカイブ

このブログのアクセスの様子ををGoogleウェブマスターツールで眺めてたら、「"eclipse3 3.2" "日本 語 化"」での検索結果から来ていただいている率が一番高かった。

で、そのキーワードで引っかかっている記事を見てみたら「日本語化はめんどくさいからしない」とか書いてあった。

たぶん、このキーワードで来てくれた方は、Eclipseの日本語のやり方が知りたかったんだと思う。けっして、筆者がなぜEclipseの日本語化がめんどくさがっているのか、を知りたかったわけではないと思う。

ということで、なんとなく申し訳ないと思ったので、Eclipseのプラグインの日本語化をするプラグイン「Pleiades」のリンクを張っておこうと思いました。

また、中途半端な対応で申し訳ないんですが、やっぱり日本語化はめんどくさいので使っていません。ただ、たくさんのプラグインに対応しているようなので(バーっとみたところ、メジャーどころはほとんど対応している模様)、ご参考にしてみてください。


ということで、EclipseでTestNGを使ってみます。

題材は前回のStringからDocument、DocumentからStringに変換するクラスでやってみました。

まず、TestNGをダウンロードします。
で、クラスパスを通しておく。
プロジェクトのルートを右クリック>プロパティ>Java Build Path
と辿っていってLibrariesタブのところでさっきダウンロードしたjarにパスを通す。

次にEclipseのプラグインをインストールする。
Help>Software Update>Find and Install>Search for new...>New Remote Site
と辿っていって
http://beust.com/eclipse
に設定する。

あとはこの辺を参考にしてみてください。

基本的にはtestng.xmlを書いて(筆者はプロジェクトルート直下に置いている)、テストコード書くだけ。

XMLUtilsのテストだとこんな感じになる。

testng.xml
==================

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="coreTest" verbose="1">
<test name="xmlUtilsTest" >
<groups>
<run>
<include name="functest" />
</run>
</groups>
<classes>
<class name="lang.XmlUtilsTest" />
</classes>
</test>
</suite>


=================-

XmlUtilsTest.java
=================-

package lang;

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import jp.mufu.core.lang.XMLUtils;

import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;

public class XmlUtilsTest {


@Test(groups = { "functest" })
public void testDocument2String() throws Exception {
String docString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<test><answer>hello!</answer></test>"
;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource src = new InputSource(new StringReader(docString));
Document doc = builder.parse(src);

assert docString.equals(XMLUtils.document2String(doc));
}

@Test(groups = { "functest" })
public void testString2Document() throws Exception {
String docString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<test>hello!</test>"
;
Document doc = XMLUtils.string2Document(docString);
assert "hello!".equals(doc.getFirstChild().getTextContent());
}

}


==============-

・追記(2008/04/29)
テスト結果を書くの忘れてた。
実行するとコンソールにこんな感じででる。
別途EclipseのプラグインのGUIにもっとかっこよくでる。
=========
[Parser] Running:
C:\Dev\Java\Workspace\mufu-core\testng.xml


===============================================
coreTest
Total tests run: 2, Failures: 0, Skips: 0
===============================================
=========

JavaでXMLを扱う時、よくString⇔Documentの変換が必要になる。

どうも、このString⇔Documentの変換をサポートするAPIが見つからなかったので、書いた。

参考:http://www6.airnet.ne.jp/manyo/xml/index.html
   http://www.hellohiro.com/xmldom.htm

皆々様、レビューをお願いします。

============================

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
* xml操作に関連するUtilクラス
*
* @author hirop
*
*/
public class XMLUtils {

private static final Logger _logger = Logger.getLogger(XMLUtils.class);

/**
* org.w3c.dom.DocumentをStringに変換する
* 変換できなかったときはnullを返す
* @param doc
* @return string
*/
public static String document2String(Document doc) {
String string = null;
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory factory = TransformerFactory.newInstance();

Transformer former;
try {
former = factory.newTransformer();
former.transform(new DOMSource(doc.getDocumentElement()), result);
string = result.getWriter().toString();
} catch (TransformerConfigurationException e) {
_logger.warn(e);
} catch (TransformerException e) {
_logger.warn(e);
}
return string;
}

/**
* Stringをorg.w3c.dom.Documentに変換する
* 変換失敗時にはnullを返す。
* @param string
* @return Document
* @throws IOException
* @throws SAXException
* @throws ParserConfigurationException

*/
public static Document string2Document(String str){
Document doc = null;
try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
StringReader strReader = new StringReader(str);
doc = builder.parse(new InputSource(strReader));

builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
_logger.warn(e);
} catch (SAXException e) {
_logger.warn(e);
} catch (IOException e) {
_logger.warn(e);
}

return doc;

}

}
================

このアーカイブについて

このページには、2008年4月以降に書かれたブログ記事のうちJavaカテゴリに属しているものが含まれています。

次のアーカイブはJava: 2008年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。