急,急,急,救命啊!

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.

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

猜你喜欢
4Go 1 2 3 4 下一页