StringWriter生成的编码格式
使用StringWriter
类生成的字符串编码格式取决于当前Java虚拟机的默认字符编码,通常是UTF-8或者UTF-16。如果需要指定生成的字符串编码格式,可以使用OutputStreamWriter
类将StringWriter
输出到ByteArrayOutputStream
中,然后通过指定编码格式生成字符串,例如:
StringWriter stringWriter = new StringWriter();
marshaller.marshal(obj, stringWriter);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
writer.write(stringWriter.toString());
writer.flush();
String xmlStr = new String(outputStream.toByteArray(), "UTF-8");
这样可以将生成的XML字符串编码格式指定为UTF-8。
XStream生成格式化的xml带xml version="1.0" encoding="UTF-8"
要生成格式化的XML并带有XML版本和编码信息,可以按照以下步骤进行操作:
添加XStream和相关依赖包到项目中。
创建一个XStream对象。
设置XStream对象的属性,包括格式化输出、版本和编码信息。
将Java对象转换为XML字符串。
下面是示例代码:
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.CompactWriter;
import com.thoughtworks.xstream.io.xml.DomDriver;
import java.io.StringWriter;
public class XmlGenerator {
public static void main(String[] args) {
// 创建XStream对象
XStream xstream = new XStream(new DomDriver());
// 设置属性
xstream.alias("person", Person.class);
xstream.useAttributeFor(Person.class, "id");
xstream.autodetectAnnotations(true);
// 创建Java对象
Person person = new Person(1, "Tom", "Male", 28);
// 将Java对象转换为XML字符串
StringWriter writer = new StringWriter();
xstream.marshal(person, new CompactWriter(writer));
String xml = writer.toString();
// 输出XML字符串
System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
System.out.println(xml);
}
}
在上面的示例代码中,我们设置了XStream对象的属性,包括XML标签别名、使用属性方式、自动检测注解。然后,创建了一个Java对象,并使用XStream对象将其转换为XML字符串。最后,在输出XML字符串时,我们手动添加了XML版本和编码信息。
freemarker如何动态生成html
Freemarker 是一款流行的 Java 模板引擎,它可以用于生成动态的 HTML 页面。下面简要介绍一下使用 Freemarker 生成 HTML 的过程:
- 编写 Freemarker 模板文件
首先,我们需要编写一个 Freemarker 模板文件,它类似于一个 HTML 文件,但是其中可以包含一些动态的变量和逻辑。例如,我们可以创建一个 template.ftl
文件,其中包含以下内容:
<!DOCTYPE html>
<html>
<head>
<title>${title}</title>
</head>
<body>
<h1>${heading}</h1>
<ul>
<#list items as item>
<li>${item}</li>
</#list>
</ul>
</body>
</html>
在上面的模板中,${title}
、${heading}
和 ${items}
都是动态变量,它们的值将在后面的 Java 代码中进行设置和填充。
- 创建一个 Configuration 对象
接下来,我们需要创建一个 Configuration
对象,它将负责加载和解析模板文件。通常,我们可以使用下面的代码创建一个 Configuration
对象:
Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
cfg.setDirectoryForTemplateLoading(new File("/path/to/templates"));
cfg.setDefaultEncoding("UTF-8");
在上面的代码中,我们指定了 Freemarker 版本号、模板文件的路径和默认编码方式。
- 准备数据模型
接下来,我们需要准备数据模型,它将提供动态变量的值。例如,我们可以创建一个 Map
对象,其中包含 title
、heading
和 items
三个变量的值:
Map<String, Object> data = new HashMap<>();
data.put("title", "My Awesome Page");
data.put("heading", "Welcome to my page!");
List<String> items = new ArrayList<>();
items.add("item 1");
items.add("item 2");
items.add("item 3");
data.put("items", items);
- 加载模板文件并生成 HTML
最后,我们可以使用 Configuration
对象加载模板文件,并将数据模型填充到模板中。下面是一个示例代码:
Template template = cfg.getTemplate("template.ftl");
StringWriter out = new StringWriter();
template.process(data, out);
String html = out.toString();
在上面的代码中,我们首先通过 cfg.getTemplate()
方法加载模板文件,然后使用 template.process()
方法将数据模型填充到模板中,最终生成一个字符串类型的 HTML 页面。
以上就是使用 Freemarker 动态生成 HTML 页面的基本过程。实际上,Freemarker 还提供了很多高级功能,例如条件语句、循环语句、宏定义等,可以让我们更加灵活和方便地生成动态页面。
相关推荐















