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");
}
}
我总是从 "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");
}
}