使用java DOM替换/更改XSD文件中的元素类型

时间:2016-05-17 04:52:40

标签: java dom xsd

我总是从“Stackoverflow”中得到我的问题的答案,这是第一次,我发布了我的问题。

我在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>

这里,我想将type =“Vehicle”更改为type =“Twowheeler”,当元素名称为“bike”且所有出现的“vehicle”为“Twowheeler”。 我使用DOM组件读取XSD,这是否可以改变它?

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

请帮忙......

1 个答案:

答案 0 :(得分:0)

这是使用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");
    }
}