急,急,急,救命啊!

04-02-09 lijinlinlin
大家好:

本人正在做一个网页自动生成模块,其实现的功能为:在表单中填写一些文字信息后,通过程序自动生成htm文件。

我使用的编辑环境为:jdk最新版,tomcat最新版,jdom最新版。

该模块的大概工作流程为:表单提交后,使用jdom将表单信息写入xml文件中,然后再利用xsl文件(用做htm模板文件),用jdk中的 javax.xml.transform方法将其转换为htm文件。

目前该模块功能已完全实现,但唯一(也是致命的)缺点是无法向xml文件中写入特殊字符,这样也就无法在生成的htm文件中显示正确的文本格式。例如:新闻网页中有新闻内容,那么内容中免不了要有“空格”“回车符”等字符。为了正确显示新闻内容格式,我要将新闻内容中的“空格”“回车符”转换为“&nbsp;”“<br>”,但经测试发现“空格”在被写入xml文件中后被转换成了“&amp;nbsp;”,而“大于号”被转换成了“&gt;”,“小于号”被转换成了“&lt;”。这样一来在转换成htm时,格式就全乱了。

想请教一下为了实现此模块,应该怎样将新闻内容写入xml文件中呢?或用什么其它的方法可实现此模块?

谢谢!

yangyu
2004-02-10 08:27
顶一下,我很快要遇到这个问题,没人回答的话我一天顶一次。

cats_tiger
2004-02-10 10:39
换一个思路,不用jdom:

1)写一个Servlet,使用out.println(),完成xml格式文件的输出。

例如:

out.println("<新闻内容>新&nbsp;闻><br></新闻内容>")

2)使用java.net.URL类访问这个servlet,并读取所有的输出信息。

3)使用IO类将URL读取的信息保存为xml

yangyu
2004-02-11 10:41
呵呵,放到

<!--
<p>

-->
<p>

yangyu
2004-02-11 13:29
试试:

element.addContent(new CDATA("<xml> content"));
String noDifference = element.getText();
<p>

如不行,看看:

Why does

setText("&#160;")
not do what I want?

When you pass a string into a method like setText() JDOM assumes it's just that, a string, not a fragment of XML. For example, when you call:

element.setText("&#160;")

JDOM assumes you want to set the content to the string containing the six characters & # 1 6 0 ;. It does not parse it to attempt to understand it as XML first. Thus when you output the text using XMLOutputter it will naturally escape the special ampersand character and output &#160;. The solution is to pass regular Unicode characters to the setText() method or, if you have text data that you want to be interpreted as XML, pass it through an XML parser before it goes into JDOM. This is what the SAXBuilder and DOMBuilder classes do.

有结果后请帖上来,我过段时间要用。

lijinlinlin
2004-02-13 08:58
放到<!--

-->中在写入XML文件时仍会把“<>”替换成“&lt;”“&gt;”

lijinlinlin
2004-02-13 08:59
上面的写错了!!!

放到<!--

-->中在写入XML文件时仍会把“<>”替换成“&lt;”“&gt;”

yangyu
2004-02-13 11:18
我开始做到这儿了。

看来还得把xml的特殊字符转换回去。

应该是个常见问题,哪位有更好的方法请多多指教!

yangyu
2004-02-15 19:10
我不能这样做!

教育软件,有可能真是

&amp;或<或>
,不能全转,我觉得还是应该用CDATA,jdom会将它的内容转换,我试试其它XSLT

lijinlinlin
2004-02-16 13:23
我也试试JDOM的CDATA

lijinlinlin
2004-02-18 08:17
CDATA还是不行!!!

yangyu
2004-02-18 13:42
apache的也不行,我已放弃其它方法,而是在转换后把所有& amp;改回&,等等,只要只扫描一次,不会出错。

不甘心啊^_^

lijinlinlin
2004-02-19 08:09
看来也只有这个方法了。:-)

这个问题我也问过banq,但没有回应???:-(

yangli
2004-02-19 16:25
可以这样试一下:

把每个自然段用<p></p>包起来.

<p>a bc</p>

<p>b de</p>

不要把<p>处理成TEXT, 而是看成一个XML的tag. 用JDOM可以很容易做到.

至于空格, 因为在tag内, 就会照原样保留.

lijinlinlin
2004-02-19 16:29
楼上的好兄弟,再发一遍你写的东东吧。

你写的被HTML掉了。

谢谢你了!

猜你喜欢
2Go 1 2 下一页