【问题标题】:Creating xml from with java用java创建xml
【发布时间】:2010-09-27 16:41:07
【问题描述】:

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

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

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

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

它为在目录中找到的每个文件创建一个新的&lt;file&gt;

非常感谢任何帮助。

【问题讨论】:

    标签: java xml


    【解决方案1】:

    您可以使用 Vinze 建议的 StringBuilder 方法,但需要注意的是,您需要确保您的文件名不包含特殊的 XML 字符,如果包含,则将它们转义(例如将

    在这种情况下,它可能不会出现,没有它你就可以侥幸逃脱,但是如果你曾经移植这段代码以在另一种情况下重用,你可能会被它咬住。因此,您可能想查看一个 XMLWriter 类,它将为您完成所有转义工作。

    【讨论】:

      【解决方案2】:

      看看 DOM 和 ECS。以下示例根据here 的要求进行了调整:

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

      【讨论】:

        【解决方案3】:

        使用 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);
        

        【讨论】:

          【解决方案4】:

          好吧,只需使用 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());
          

          【讨论】:

          • 坏主意。如果您有任何带有需要在 XML 中转义的字符的文件名,那么您将遇到麻烦。有 XML 库是有原因的……
          • 没错...我习惯这样做是为了“简单”的数据导出,但我总是知道什么是转义问题...
          • 给定一个体面的 API,使用库产生的代码同样简单 - 如果不是更简单 - 并且 很多 更健壮,IMO。
          • 是的,但是如果您手头没有任何库,并且 XML 非常简单,我宁愿不依赖另一个库。无论如何,您通常都需要这样的库,在这种情况下,您应该使用它。
          • 是的...我更多地用于“单次拍摄”用途...用于可重用代码和“核心功能”(例如保存/加载)我还使用 API :)
          猜你喜欢
          • 1970-01-01
          • 2011-07-09
          • 2011-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多