我总是从“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”,但我不喜欢这个)
请帮忙......
答案 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");
}
}