java - 如何指定 Java Sax 解析器解析 XML 文件的一部分?

标签 java xml file parsing sax

我有一个 XML 文件要由 java sax 解析器解析。我希望解析器仅解析开始和结束标记之间的内容( <Models></Models> )而不是整个文件。如何指定要由 java Sax 解析器解析的 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 解析器仅解析 <Models> 之间的内容和</Models>因为当解析整个文件中的状态条件值时,输出给了我<图>部分中的状态条件值,我不想读取它们。 有帮助吗?

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

最佳答案

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

关于java - 如何指定 Java Sax 解析器解析 XML 文件的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58064442/

相关文章:

java - 什么是 PECS(生产者扩展消费者 super )?

java - 在java中将图像转换为8位灰度RAW图像

java - 应该关闭哪些资源?

java - 哪个线程正在使用文件

c - 使用 fscanf 将 float 和字符串存储到 C 结构体数组中

java - 尝试使用 HttpClient 获取 DOMINO HTTP session — 响应代码始终为 200

java - 如何仅打印数组中具有重复字符的单词?

java - 使用 Dom Java 对 XML 元素的文本内容进行标记

java - Wowza 流媒体引擎 Eclipse server.xml

java - 相机与抽屉导航重叠 - Android