【问题标题】:How to specify a part of the XML file to be parsed by the Java Sax Parser?如何指定要由 Java Sax Parser 解析的 XML 文件的一部分?
【发布时间】:2019-09-23 14:15:35
【问题描述】:

我有 XML 文件要由 java sax 解析器解析。我希望解析器只解析开始和结束标记(<Models></Models>)之间的内容,而不是整个文件。如何指定要由 java Sax Parser 解析的 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 Parser 仅解析 &lt;Models&gt;&lt;/Models&gt; 之间的内容,因为在解析整个文件中 statecondition 的值时,输出会为我提供 部分中的 State condition 值我不想读它们。 有什么帮助吗?

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);}...

【问题讨论】:

  • Models的开头存储在一个布尔变量中,如果该布尔变量为真,则只读出LifeLine,当然当你得到@987654330时在endElement处理程序中将它设置为假@在那里报道。
  • @Martin Honnen 谢谢

标签: java xml file parsing sax


【解决方案1】:

创建一个管道,其中 SAX 解析器的输出进入 XMLFilter,它将选定的事件传递到应用程序的下一步。您的XMLFilter 在获得Models 开始标记时设置开关,并在获得Models 结束标记时设置开关;仅当开关打开时,事件才会传递到管道中的下一步。

【讨论】:

  • @MichaeI Kay 我尝试了 Martin Honnen 的建议,感谢您的帮助
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多