下面为你详细讲解Java创建XML的完整攻略。
一、引入相关依赖
使用Java创建XML文件需要使用到JDK提供的Java API,没有额外的第三方依赖库。需要在Java项目中引入以下包:
<!--用于创建和操作XML文档-->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
<version>2.0.6</version>
</dependency>
<!--用于输出XML文档-->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
<version>2.0.6</version>
</dependency>
二、创建XML文档
1. 创建根元素
我们首先需要创建一个根元素,可以使用Element类的构造方法:
Element root = new Element("root");
要添加命名空间时,需要使用Namespace
类:
Namespace ns = Namespace.getNamespace("http://www.w3.org/1999/xhtml");
Element root = new Element("html", ns);
2. 创建子元素
接着,我们可以通过根元素的addContent()
方法添加子元素。例如:
Element child = new Element("child");
root.addContent(child);
也可以在创建元素对象时就添加到父元素:
Element child = new Element("child");
Element parent = new Element("parent");
parent.addContent(child);
如果需要指定元素的命名空间,可以在构造方法中指定:
Namespace ns = Namespace.getNamespace("http://www.w3.org/1999/xhtml");
Element child = new Element("child", ns);
3. 设置元素属性
通过元素的setAttribute()
方法可以设置元素的属性:
Element child = new Element("child");
child.setAttribute("name", "child1");
设置具有命名空间的属性:
Namespace ns = Namespace.getNamespace("http://www.w3.org/1999/xhtml");
Element child = new Element("child", ns);
Attribute attribute = new Attribute("lang", "en", ns);
child.setAttribute(attribute);
4. 设置元素内容
可以使用元素的setText()
方法设置元素的文本内容,例如:
Element child = new Element("child");
child.setText("Hello World");
也可以通过addContent()
方法添加子元素或CDATA:
Element child = new Element("child");
child.addContent(new Element("subchild"));
child.addContent(new CDATA("<hr/>"));
5. 创建XML文档
通过创建好的根元素,即可创建XML文档:
Document doc = new Document(root);
6. 保存XML文档
最后,通过使用XMLOutputter
工具类来将XML文档保存为文件或输出到控制台:
XMLOutputter output = new XMLOutputter();
FileOutputStream fos = new FileOutputStream("example.xml");
output.output(doc, fos);
三、示例说明
下面是两个创建XML文档的示例:
示例一:创建包含命名空间的XML文档
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom2.Attribute;
import org.jdom2.CDATA;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.Namespace;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class CreateXMLExample {
public static void main(String[] args) throws IOException {
Namespace ns = Namespace.getNamespace("http://www.w3.org/1999/xhtml");
Element html = new Element("html", ns);
Element head = new Element("head", ns);
Element body = new Element("body", ns);
html.addContent(head);
html.addContent(body);
Element title = new Element("title", ns);
title.setText("Example");
head.addContent(title);
Element h1 = new Element("h1", ns);
h1.setText("Hello World");
body.addContent(h1);
Element script = new Element("script", ns);
script.setAttribute(new Attribute("src", "script.js", ns));
body.addContent(script);
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
FileOutputStream os = new FileOutputStream("example.xml");
outputter.output(new Document(html), os);
os.close();
}
}
示例二:创建RSS2.0标准的XML文档
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.jdom2.Attribute;
import org.jdom2.CDATA;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.Namespace;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class CreateRSSExample {
public static void main(String[] args) throws IOException {
// 统一使用UTF-8编码,避免中文乱码问题
Format format = Format.getPrettyFormat().setEncoding("UTF-8");
XMLOutputter outputter = new XMLOutputter(format);
// RSS2.0规范中的命名空间
Namespace dcNS = Namespace.getNamespace("dc", "http://purl.org/dc/elements/1.1/");
Namespace atomNS = Namespace.getNamespace("atom", "http://www.w3.org/2005/Atom");
Element rss = new Element("rss");
rss.setAttribute(new Attribute("version", "2.0"));
Element channel = new Element("channel");
rss.addContent(channel);
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
String formattedDate = dateFormat.format(now);
Element title = new Element("title");
title.setText("Example");
channel.addContent(title);
Element link = new Element("link");
link.setText("https://example.com");
channel.addContent(link);
Element description = new Element("description");
description.setText("Example RSS2.0 Feed");
channel.addContent(description);
Element language = new Element("language");
language.setText("en-us");
channel.addContent(language);
Element pubDate = new Element("pubDate");
pubDate.setText(formattedDate);
channel.addContent(pubDate);
Element item1 = createItem("Example Item 1", "https://example.com/item1",
"This is the content of Example Item 1", formattedDate, "Item 1", dcNS, atomNS);
Element item2 = createItem("Example Item 2", "https://example.com/item2",
"This is the content of Example Item 2", formattedDate, "Item 2", dcNS, atomNS);
channel.addContent(item1);
channel.addContent(item2);
FileOutputStream os = new FileOutputStream("rss.xml");
outputter.output(new Document(rss), os);
os.close();
}
private static Element createItem(
String title, String link, String description, String pubDate, String id,
Namespace dcNS, Namespace atomNS) {
Element item = new Element("item");
Element itemTitle = new Element("title");
itemTitle.setText(title);
item.addContent(itemTitle);
Element itemLink = new Element("link");
itemLink.setText(link);
item.addContent(itemLink);
Element itemDescription = new Element("description");
itemDescription.addContent(new CDATA(description));
item.addContent(itemDescription);
Element itemPubDate = new Element("pubDate");
itemPubDate.setText(pubDate);
item.addContent(itemPubDate);
Element itemId = new Element("guid");
itemId.setAttribute(new Attribute("isPermaLink", "false"));
itemId.setText(id);
item.addContent(itemId);
Element itemAuthor = new Element("author", atomNS);
itemAuthor.setText("author@example.com");
item.addContent(itemAuthor);
Element itemCategory = new Element("category", dcNS);
itemCategory.setText("Category1");
item.addContent(itemCategory);
List<Element> elements = new ArrayList<>();
elements.add(new Element("element1"));
elements.add(new Element("element2"));
Element content = new Element("content", atomNS);
content.addContent(new CDATA("This is the content"));
content.setContent(elements);
item.addContent(content);
return item;
}
}
以上就是Java创建XML的完整攻略及两个示例说明,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Java创建XML(无中文乱码)过程解析 - Python技术站