首先,有一个前提。
我知道网站上存在几个相同的问题,但在这些问题中我都没有找到解决问题的明确方法。我知道 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 项目制作版本器