如何指定要由JavaSAX解析器解析的XML文件的一部分?
我有XML文件要由JavaSAX解析器解析。我希望解析器只解析begin和end标记(如何指定要由JavaSAX解析器解析的XML文件的一部分?,java,xml,file,parsing,sax,Java,Xml,File,Parsing,Sax,我有XML文件要由JavaSAX解析器解析。我希望解析器只解析begin和end标记(和)之间的内容,而不是整个文件。如何指定要由JavaSAX解析器解析的XML文件的一部分? 我的xml文件如下所示: some tags <Models> my content to be parsed <LifeLine... <state condition... other tags </LifeLine> ...... </Models> <Dia
和
)之间的内容,而不是整个文件。如何指定要由JavaSAX解析器解析的XML文件的一部分?
我的xml文件如下所示:
some tags
<Models>
my content to be parsed
<LifeLine...
<state condition...
other tags
</LifeLine>
......
</Models>
<Diagrams>
....
<LifeLine..
<state condition...
<State condition..
</LifeLine>
other tags
</Diagrams>
创建一个管道,其中SAX解析器的输出进入
XMLFilter
,该过滤器将所选事件传递到应用程序的下一步。您的XMLFilter
在获取Models
开始标记时将打开开关,在获取Models
结束标记时将关闭开关;仅当开关打开时,事件才会传递到管道中的下一步。将模型的开头存储在布尔变量中,并且仅当该布尔变量为真时才读取生命线,当然,当您在endElement
处理程序中报告Models
时,请将其设置为false。@Martin Honnen感谢@MichaeI Kay我尝试了Martin Honnen的建议,谢谢您的帮助
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equals("LifeLine")) {
currentLifeLine=new Lifeline(attributes.getValue("Name"), StateList,TimeInstList);
}
else if (qName.equals("StateCondition")) {
currentSC=new State(attributes.getValue("Id"), attributes.getValue("Name"));
}
.................
public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equals("StateCondition")) {
currentLifeLine.addStateCondition(currentSC);}...