2008-12-19 76 views
1

我需要再次提供您的专业知识。我有一个java类,它在目录中搜索xml文件(显示它在eclipse控制台窗口中找到的文件),将指定的xslt应用于这些文件并将输出发送到目录。使用java创建xml

我现在要做的是创建一个包含文件名和文件格式类型的xml。格式应该是这样的;

<file> 
     <fileName>   </fileName> 
     <fileType>  </fileType> 
</file> 

<file> 
    <fileName>   </fileName> 
    <fileType>  </fileType> 
</file> 

如果每个文件发现在它创建一个新<file>的目录。

任何帮助是真正赞赏。

回答

3

看一看DOM和ECS。下面的例子适应于您的需求从here

XMLDocument document = new XMLDocument(); 
for (File f : files) { 
    document.addElement(new XML("file") 
     .addXMLAttribute("fileName", file.getName()) 
     .addXMLAttribute("fileType", file.getType()) 
    ) 
    ); 
} 
0

也只是使用StringBuilder:

StringBuilder builder = new StringBuilder(); 
for(File f : files) { 
    builder.append("<file>\n\t<fileName>").append(f.getName).append("</fileName>\n)"; 
    [...] 
} 
System.out.println(builder.toString()); 
+0

坏主意。如果你有任何需要用XML转义的字符的文件名,你会遇到麻烦。有一个原因,为什么有XML库... – 2008-12-19 11:00:37

10

使用XML库。有很多,第三方的几乎都比Java中内置的DOM API更容易使用。上次我用它,JDom是相当不错的。 (我没有最近做太多XML)

喜欢的东西:

Element rootElement = new Element("root"); // You didn't show what this should be 
Document document = new Document(rootElement); 

for (Whatever file : files) 
{ 
    Element fileElement = new Element("file"); 
    fileElement.addContent(new Element("fileName").addContent(file.getName()); 
    fileElement.addContent(new Element("fileType").addContent(file.getType()); 
} 

String xml = XMLOutputter.outputString(document); 
1

您可以使用Vinze建议StringBuilder的方法,但有一点需要注意的是,你需要确保你的文件名不包含任何特殊的XML字符,转义如果他们这样做(例如将<替换为& lt,并适当处理引号)。

在这种情况下,它可能不会出现,并且您将在没有它的情况下离开,但是如果您曾经移植此代码以便在其他情况下重用,则可能会被此事咬伤。所以你可能想看看一个XMLWriter类,它将为你做所有的转义工作。