- 論壇徽章:
- 0
|
如何利用jaxp輸出xml片段?
這個(gè)問(wèn)題之所以會(huì)出現(xiàn),是和我前期做的一個(gè)程序有關(guān).
我用xslt將一個(gè)xml文件轉(zhuǎn)換成html之后,需要截取其中的一部分,除了內(nèi)容還包括html tag.
起先我用dom去解析html,發(fā)現(xiàn)java1.4和java1.5在對(duì)待node上有區(qū)別.
java1.4可以將一個(gè)node直接toString,里面包含了文本和tag;
java1.5也可以將一個(gè)node直接toString,不過(guò)里面只有null.
從網(wǎng)上了解,node.toString()這個(gè)方法本來(lái)就是調(diào)試用的,Sun公司允許每個(gè)版本的實(shí)現(xiàn)有所不同.
為了解決這個(gè)問(wèn)題,我又查了一些資料,然后發(fā)現(xiàn),真正可移植的方法應(yīng)該是這樣的:
1.取得Dom Tree上的一個(gè)Node
2.將這個(gè)Node轉(zhuǎn)換成DOMSource
3.建立一個(gè)Transformer的實(shí)例,不過(guò)建的時(shí)候要有所講究
Transformer t=TransformerFactory.newInstance().newTransformer();
即這里newTransformer不能帶參數(shù).
不帶參數(shù)的意思就是說(shuō),轉(zhuǎn)換過(guò)程中不做任何改變,原樣輸出
4.有了DOMSource和transformer,就可以將Node輸出到一個(gè)字符串中去了,而且是完整的保留了Node里所有的信息.
代碼如下:
Transformer transformer;
DOMSource d=new DOMSource(nl.item(i));
try
{
transformer = TransformerFactory.newInstance().newTransformer();
}
catch(TransformerConfigurationException ex)
{
ex.printStackTrace();
return;
}
StreamResult sr=new StreamResult(new StringWriter());
try
{
transformer.transform(d,sr);
}
catch(TransformerException ex)
{
ex.printStackTrace();
return;
}
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/4353/showart_1206276.html |
|