Java 对XML数据进行排序

Java 对XML数据进行排序,java,Java,我正在使用Java构建XML代码。请参阅我的代码片段 Document document = null; String xml = ""; ReportsDAO objReportsDAO = null; try { logger.info("Getting XML data for Consumable Report Starts..."); objReportsDAO = new ReportsDAO();

我正在使用Java构建XML代码。请参阅我的代码片段

    Document document = null;
    String xml = "";
    ReportsDAO objReportsDAO = null;
    try 
    {
        logger.info("Getting XML data for Consumable Report Starts...");
        objReportsDAO = new ReportsDAO();

        List consumableDTOLst = objReportsDAO.getConsumableData(issuedBy, issuedTo, employeeType, itemCode, itemName, className, transactionFromDate, transactionToDate, machineCode, workOrderNumber, jobName, customerId);
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        DocumentBuilder builder = factory.newDocumentBuilder();
        document = builder.newDocument();
        Element rootElmnt = (Element) document.createElement("items");  
        document.appendChild(rootElmnt);

        Element elmt = null;
        ConsumableDTO objConsumableDTO = null;
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");

        for (int i = 0; i < consumableDTOLst.size(); i++) 
        {
            objConsumableDTO = (ConsumableDTO)consumableDTOLst.get(i);
            elmt =  (Element) document.createElement("item");
            elmt.setAttribute("IssuedBy", objConsumableDTO.getIssuedBy());
            elmt.setAttribute("IssuedTo", objConsumableDTO.getIssuedTo());
            elmt.setAttribute("EMPLOYECADRE", objConsumableDTO.getEmployeeType());
            elmt.setAttribute("ITEMCODE", objConsumableDTO.getItemCode());
            elmt.setAttribute("ITEMNAME", objConsumableDTO.getItemName());
            elmt.setAttribute("ITEMCLASS", objConsumableDTO.getClassName());
            elmt.setAttribute("DATE", sdf.format(objConsumableDTO.getTransactionDate()));
            elmt.setAttribute("machineCode", objConsumableDTO.getMachineCode());
            elmt.setAttribute("JOB", objConsumableDTO.getJobName());
            elmt.setAttribute("WORKORDERNUMBER", objConsumableDTO.getWorkOrderNumber());
            elmt.setAttribute("CustomerName", objConsumableDTO.getCustomerName());
            elmt.setAttribute("RoleName", objConsumableDTO.getGroupName());
            elmt.setAttribute("VendorName", objConsumableDTO.getVendorName());
            elmt.setAttribute("QTY", String.valueOf(Math.abs(objConsumableDTO.getQuantity())));
            elmt.setAttribute("unitDescription", objConsumableDTO.getUnitDescription());
            elmt.setAttribute("RATEPERQTY", String.valueOf(objConsumableDTO.getRate()));
            elmt.setAttribute("AMOUNT", String.valueOf(objConsumableDTO.getAmount()));
            rootElmnt.appendChild(elmt);
        }
单据单据=null;
字符串xml=”“;
ReportsDAO objReportsDAO=null;
尝试
{
info(“获取耗材报告的XML数据开始…”);
objReportsDAO=新报告sdao();
List consumableDTOLst=objReportsDAO.getConsumableData(发布人、发布人、员工类型、项目代码、项目名称、类名、事务起始日期、事务截止日期、机器代码、工作序号、作业名称、客户ID);
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
DocumentBuilder=factory.newDocumentBuilder();
document=builder.newDocument();
Element rootElmnt=(Element)document.createElement(“items”);
文件.appendChild(rootElmnt);
元素elmt=null;
ConsumableDTO objConsumableDTO=null;
SimpleDataFormat sdf=新的SimpleDataFormat(“MM/dd/yyyy”);
对于(int i=0;i
问题是所有属性都是自动排序的。如何限制它

例如

<empdetails age="25" name="john"/>

但是我想要

<empdetails name="john" age="25"/>

请提出一些想法

谢谢,

XML属性没有顺序。它们的输出方式取决于您使用的XML输出机制

因此,您可以编写on-output机制,但不应依赖任何使用者以有序的方式使用它们。如果您想要/需要排序,则应在该节点下指定XML元素序列。

XML属性没有顺序。它们的输出方式取决于您使用的XML输出机制

因此,您可以编写on-output机制,但不应依赖任何使用者以有序方式使用它们。如果您想要/需要排序,则应在该节点下指定一系列XML元素。

重复:

发件人:

请看XML文档的第3.1节 建议,上面写着,“注意 属性规范的顺序 在开始标记或空元素标记中 不重要。”

如果一个软件需要 要显示的XML元素上的属性 按照特定的顺序,该软件是 不是在处理XML,而是在处理 表面上看起来像 它需要修复

如果无法修复,你必须 生成符合其属性的文件 需求,您无法可靠地使用 标准的XML工具来生成这些 档案

贷记至

副本:

发件人:

请看XML文档的第3.1节 建议,上面写着,“注意 属性规范的顺序 在开始标记或空元素标记中 不重要。”

如果一个软件需要 要显示的XML元素上的属性 按照特定的顺序,该软件是 不是在处理XML,而是在处理 表面上看起来像 它需要修复

如果无法修复,你必须 生成符合其属性的文件 需求,您无法可靠地使用 标准的XML工具来生成这些 档案

归功于