有几种技术可以生成 XML,每种技术都有自己的优点和缺点。最简单的实现(但最难实现)是手动构建 XML。
假设您希望您的成分列表如下所示:
<ingredients>
<ingredient name="ginger"/>
<ingredient name="cinnamon"/>
<ingredient name="sugar"/>
</ingredients>
你需要你的代码来遍历向量:
System.out.println("<ingredients>");
Vector ingredients;
for (String name : ingredients) {
System.out.print(" <ingredient name=\"");
System.out.print(name);
System.out.println("\"/>");
}
System.out.println("</ingredients>");
这种方法的问题在于,当您修改底层数据结构(在您的情况下为数组的向量)时,您需要修改 XML 生成代码以匹配(这通常会导致不正确的 XML)。
最好使用 XML 库来生成 XML。一个好的 XML 库总是会生成有效的 XML。
import java.io.FileWriter;
import com.megginson.sax.XMLWriter;
import org.xml.sax.helpers.AttributesImpl;
public class GenerateXML
{
public static void main (String args[])
throws Exception
{
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.startDocument();
writer.startElement("","ingredients","",null);
for (String ingredient : ingredients) {
AttributesImpl attribs = new AttributesImpl();
attribs.addAttribute("","name","","",ingredient);
writer.startElement("", "ingredient","",attribs);
writer.endElement("ingredient");
}
writer.endElement("ingredients");
writer.endDocument();
}
有关 DOM XMLWriter 功能的更完整描述,请查看http://docstore.mik.ua/orelly/xml/sax2/ch02_02.htm,特别注意第 2.2.3 节。
您也可以进行 DOM 到 XML 的转换,但使用 DOM 意味着您必须构建数据结构的 DOM 表示,这可能(在您的情况下)是不必要且不受欢迎的额外步骤。
顺便说一句,虽然您可能从字符串数组的向量之类的东西开始,但这样的数据结构与食谱所包含的真实世界概念几乎没有关系。从长远来看,使用 Recipie 类可能会更好,该类包含成分类和说明类(又包含步骤)。虽然布置三个或四个不同类型的类似乎需要更多的工作,但在完成程序的最后 10% 时,这项工作可以节省十倍以上的同等工作量。
即使是“快速”的概念证明,使用真正描述性的数据结构也可以节省大量时间;因为概念验证可能很快成为最初的原型,然后可能成为真正发布的基础。
祝你好运,编程愉快!