用sax跳过节点

伦敦:

解析时是否可以跳过节点,这skippedEntity与它有什么关系?

考虑以下XML:

<?xml version="1.0"?>

<nutrition>

<daily-values>
    <total-fat units="g">65</total-fat>
    <saturated-fat units="g">20</saturated-fat>
    <cholesterol units="mg">300</cholesterol>
    <sodium units="mg">2400</sodium>
    <carb units="g">300</carb>
    <fiber units="g">25</fiber>
    <protein units="g">50</protein>
</daily-values>

</nutrition>

我想跳过“钠”元素

bdoughan:

您可以执行以下操作:

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.XMLReader;

public class Demo {

    public static void main(String[] args) throws Exception {
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        XMLReader xr = sp.getXMLReader();
        xr.setContentHandler(new MyContentHandler(xr));
        xr.parse("input.xml");
    }
}

MyContentHandler

此类负责处理您的XML文档。击中要忽略的节点时,可以在IgnoringContentHandler中进行交换,这将吞噬该节点的所有事件。

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class MyContentHandler extends DefaultHandler {

    private XMLReader xmlReader;

    public MyContentHandler(XMLReader xmlReader) {
        this.xmlReader = xmlReader;
    }

    public void startElement(String uri, String localName, String qName,
            Attributes atts) throws SAXException {
        if ("sodium".equals(qName)) {
            xmlReader.setContentHandler(new IgnoringContentHandler(xmlReader,
                    this));
        } else {
            System.out.println("START " + qName);
        }
    }

    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        System.out.println("END " + qName);
    }

    public void characters(char[] ch, int start, int length)
            throws SAXException {
        System.out.println(new String(ch, start, length));
    }

}

忽略ContentHandler

当IgnoringContentHandler完成吞咽事件后,它将控制权传递回您的主ContentHandler。

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class IgnoringContentHandler extends DefaultHandler {

    private int depth = 1;
    private XMLReader xmlReader;
    private ContentHandler contentHandler;

    public IgnoringContentHandler(XMLReader xmlReader, ContentHandler contentHandler) {
        this.contentHandler = contentHandler;
        this.xmlReader = xmlReader;
    }

    public void startElement(String uri, String localName, String qName,
            Attributes atts) throws SAXException {
        depth++;
    }

    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        depth--;
        if(0 == depth) {
           xmlReader.setContentHandler(contentHandler);
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

libxml ++ TextReader; 跳过节点

来自分类Dev

Euca 5 Ansible 安装跳过节点操作

来自分类Dev

使用ReadElementContentAs后,c#XMLReader会跳过节点

来自分类Dev

有没有办法使用iterparse lxml跳过节点/元素?

来自分类Dev

在 Github Pages 上上传 React 应用程序:如何跳过节点模块文件夹的上传?

来自分类Dev

OSMNX最短路径-如果无法访问节点,如何跳过节点并采取下一个最近节点

来自分类Dev

通过节点获取FTP上传进度

来自分类Dev

如何通过节点运行testcafe

来自分类Dev

不断检查子弹是否接触过节点

来自分类Dev

节点的平均距离通过节点数的对数增加python

来自分类Dev

如何判断我是否已经处理过节点

来自分类Dev

通过节点中的原型访问变量的值

来自分类Dev

AWS Dynamodb无法通过节点js同步获取数据

来自分类Dev

如何使用令牌通过节点调用Google API并表达

来自分类Dev

VueJS通过节点插件返回循环数据值

来自分类Dev

通过节点服务器连接到MongoDB的警告

来自分类Dev

通过节点运行DOH测试-'未定义文档'

来自分类Dev

通过节点属性进行ArangoDB有效遍历

来自分类Dev

如何通过节点接收Redis过期事件?

来自分类Dev

如何通过节点ID获得真正的元素?反应性的

来自分类Dev

通过节点js调用jasper report rest api

来自分类Dev

XSLT 转换 - 在迭代期间通过节点集设置变量

来自分类Dev

是否可以通过节点运行source-cmd?

来自分类Dev

如何使此终端应用程序通过节点测试?

来自分类Dev

通过节点将数据从Excel导入到SQL

来自分类Dev

如何跳过中间节点?

来自分类Dev

java - 如何通过节点在列表中的位置获取节点?(不是值,是整个节点)

来自分类Dev

如何通过节点js将子节点添加到现有json文件中?

来自分类Dev

R igraph:找到通过节点g的节点u和v之间最短路径的总数

Related 相关文章

  1. 1

    libxml ++ TextReader; 跳过节点

  2. 2

    Euca 5 Ansible 安装跳过节点操作

  3. 3

    使用ReadElementContentAs后,c#XMLReader会跳过节点

  4. 4

    有没有办法使用iterparse lxml跳过节点/元素?

  5. 5

    在 Github Pages 上上传 React 应用程序:如何跳过节点模块文件夹的上传?

  6. 6

    OSMNX最短路径-如果无法访问节点,如何跳过节点并采取下一个最近节点

  7. 7

    通过节点获取FTP上传进度

  8. 8

    如何通过节点运行testcafe

  9. 9

    不断检查子弹是否接触过节点

  10. 10

    节点的平均距离通过节点数的对数增加python

  11. 11

    如何判断我是否已经处理过节点

  12. 12

    通过节点中的原型访问变量的值

  13. 13

    AWS Dynamodb无法通过节点js同步获取数据

  14. 14

    如何使用令牌通过节点调用Google API并表达

  15. 15

    VueJS通过节点插件返回循环数据值

  16. 16

    通过节点服务器连接到MongoDB的警告

  17. 17

    通过节点运行DOH测试-'未定义文档'

  18. 18

    通过节点属性进行ArangoDB有效遍历

  19. 19

    如何通过节点接收Redis过期事件?

  20. 20

    如何通过节点ID获得真正的元素?反应性的

  21. 21

    通过节点js调用jasper report rest api

  22. 22

    XSLT 转换 - 在迭代期间通过节点集设置变量

  23. 23

    是否可以通过节点运行source-cmd?

  24. 24

    如何使此终端应用程序通过节点测试?

  25. 25

    通过节点将数据从Excel导入到SQL

  26. 26

    如何跳过中间节点?

  27. 27

    java - 如何通过节点在列表中的位置获取节点?(不是值,是整个节点)

  28. 28

    如何通过节点js将子节点添加到现有json文件中?

  29. 29

    R igraph:找到通过节点g的节点u和v之间最短路径的总数

热门标签

归档