1

首先,有一个前提。

我知道网站上存在几个相同的问题,但在这些问题中我都没有找到解决问题的明确方法。我知道 xml 文件的属性顺序对于数据一致性或与实际将 xml 视为此类而不是字符串的软件集成的能力是绝对无关的。但是,我必须保留它,因为我要修改文件,这些文件将由操作员使用 WinMerge 或 Tortoise 的检查修改命令进行目视检查。我使用过 DOM、STAX 和 JDOM 等库,但效果不佳。在我只需要修改元素文本的文件中,我没有问题,如果有一些不同的格式,我可以轻松地将其修改为字符串。

有了属性就更复杂了。这些按其他顺序排序(请不要质疑这是否正确不是问题所固有的),并且在 winmerge 上看起来是否所有文档都已修改。

代码故意不可读

这是我的xml首先和修改后的(剪切和半随机文本内容)示例

    <?xml version="1.0" encoding="UTF-8"?>
    <sca:composite xmi:version="2.0" 
      xmlns:xmi="http://www.omg.org/XMI" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:BW="http://xsd.tns.tibco.com/amf/models/sca/implementationtype/BW" xmlns:XMLSchema="http://www.w3.org/2001/XMLSchema" 
      xmlns:compositeext="http://schemas.tibco.com/amx/3.0/compositeext" 
      xmlns:productAvailabilityResp="http://www.example.org/ERTETERET" 
      xmlns:property="http://ns.tibco.com/bw/property" 
      xmlns:rest="http://xsd.tns.tibco.com/bERTERTETE" 
      xmlns:sca="http://www.3453434FDSSDFSD.org/xmlns/sca/1.0" 
      xmlns:scact="http://xsd.tns.tibco.com/23E23E2E23Ee" 
      xmlns:scaext="http://2D2333DD32s" 
      xmi:id="_uKDz4IaiEeipW88nT3HxEA" 
      targetNamespace="http://tns.tibco.com/D23D32DD2232D2D2" 
      name="Q1231W1y" compositeext:version="1.0.0" 
      compositeext:description="TO EDIT VALUE" 
      ompositeext:formatVersion="2">
    </sca:composite>

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sca:composite xmlns:sca="http://www.SDFSDF.org/xmlns/sca/1.0" 
    xmlns:BW="http://xsd.tns.tibco.com/amf/models/sca/SDFS/BW" 
    xmlns:XMLSchema="http://www.w3.org/2001/XMLSchema" 
    xmlns:compositeext="http://schemas.tibco.com/amx/3.0/compositeext" 
    xmlns:productAvailabilityResp="http://www.example.org/SDFSDFSD"
     xmlns:property="http://ns.tibco.com/bw/property" 
     xmlns:rest="http://xsd.tns.tibco.com/SDFSF" 
     xmlns:scact="http://xsd.tns.tibco.com/amf/models/sca/SDFSD" 
     xmlns:scaext="http://xsd.tns.tibco.com/amf/models/sca/extensions" 
     xmlns:xmi="http://www.omg.org/XMI" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     compositeext:description="test EDITED VALUE" 
     compositeext:formatVersion="2" 
     compositeext:version="1.0.0" 
     name="ERFERFRFE" 
     targetNamespace="http://tns.tibco.com/bw/composite/ERFERFREy"
     xmi:id="_uKDz4IaiEeipW88nT3HxEA" 
     xmi:version="2.0">
</sca:composite>

我们可以一起尝试找到解决方案吗?

像 Federico 建议的那样编辑:

我需要做的是改变单个属性的值和元素的文本内容,我可以做这两件事。但是当我写回文件时,我发现属性的不同顺序和不同的格式:

<?xml version="1.0" encoding="UTF-8"?>
<sca:composite //same attributes
  compositeext:description="TO EDIT VALUE" 
  //same other attributes>

other stuff 

</sca:composite>

ps:我的意图是在设计师之外为 tibco BW6 项目制作版本器

4

1 回答 1

0
于 2021-03-06T12:05:43.210 回答