Replace/Change XSD 文件中的元素类型使用 java DOM

Replace/Change element type in XSD file using java DOM

我总是从 "Whosebug" 那里得到我的问题的答案,这是我第一次发布我的问题。

我正在使用 java 中的 DOM 读取 XSD 文件。在我的 XSD 中,我需要更改元素的类型。

<xs:complexType name="MainDoc">
    <xs:sequence>
        <xs:element name="Bike" type="Vehicle"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="Vehicle">
    <xs:sequence>
        <xs:element name="price" type="amount"/>            
    </xs:sequence>
</xs:complexType>

在这里,当元素名称为 "bike" 并且所有出现的 "vehicle" 都更改为 "Twowheeler" 时,我想将 type="Vehicle" 更改为 type="Twowheeler" . 我使用 DOM 组件阅读了 XSD,所以可以更改它吗?

(解决此问题的方法是,我将使用文件处理操作替换 XSD 文件中的单词 "vehicle",但我不喜欢这个)

请帮忙...

这是使用 XPath 和 VTD 进行属性更新的代码-XML。

import com.ximpleware.*;
import java.io.*;
public class updateXSD {
    public static void main(String[] s) throws VTDException, IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("d:\xml\xsd.xml", true)){
            return;
        }
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        ap.declareXPathNameSpace("xs", "XSD namespace here");
        ap.selectXPath("//xs:element[@name='Bike']/@type");
        XMLModifier xm = new XMLModifier(vn);
        int i=-1;
        while((i=ap.evalXPath())!=-1){
            xm.updateToken(i+1, "Twowheeler");
        }
        xm.output("d:\xml\newXSD.xml");
    }
}