Class SimpleSaxHandler

java.lang.Object
cloud.opencode.base.xml.sax.SimpleSaxHandler
All Implemented Interfaces:
SaxHandler

public final class SimpleSaxHandler extends Object implements SaxHandler
Simple SAX Handler - Lambda-friendly SAX handler 简化 SAX 处理器 - Lambda 友好的 SAX 处理器

This class provides a fluent API for registering callbacks for SAX events.

此类提供流式 API,用于注册 SAX 事件的回调。

Usage Examples | 使用示例:

SimpleSaxHandler handler = SimpleSaxHandler.create()
    .onStart("user", (name, attrs) -> {
        System.out.println("User: " + attrs.get("id"));
    })
    .onText("name", text -> {
        System.out.println("Name: " + text);
    })
    .onEnd("user", name -> {
        System.out.println("End user");
    });

SaxParser.createSecure()
    .handler(handler)
    .parse(xml);

Features | 主要功能:

  • Lambda-friendly SAX handler with fluent API - Lambda 友好的 SAX 处理器,带流式 API
  • Register callbacks by element name - 按元素名称注册回调
  • Separate callbacks for start, end, and text events - 开始、结束和文本事件的分别回调

Security | 安全性:

  • Thread-safe: No (mutable handler registration) - 线程安全: 否(可变处理器注册)
  • Null-safe: No (throws on null callback) - 空值安全: 否(null 回调抛异常)
Since:
JDK 25, opencode-base-xml V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • create

      public static SimpleSaxHandler create()
      Creates a new simple SAX handler. 创建新的简化 SAX 处理器。
      Returns:
      a new handler | 新处理器
    • onStart

      public SimpleSaxHandler onStart(String elementName, BiConsumer<String, Map<String,String>> callback)
      Registers a callback for element start. 注册元素开始的回调。
      Parameters:
      elementName - the element name | 元素名称
      callback - the callback (name, attributes) | 回调(名称,属性)
      Returns:
      this handler for chaining | 此处理器以便链式调用
    • onEnd

      public SimpleSaxHandler onEnd(String elementName, Consumer<String> callback)
      Registers a callback for element end. 注册元素结束的回调。
      Parameters:
      elementName - the element name | 元素名称
      callback - the callback (element name) | 回调(元素名称)
      Returns:
      this handler for chaining | 此处理器以便链式调用
    • onText

      public SimpleSaxHandler onText(String elementName, Consumer<String> callback)
      Registers a callback for element text content. 注册元素文本内容的回调。
      Parameters:
      elementName - the element name | 元素名称
      callback - the callback (text content) | 回调(文本内容)
      Returns:
      this handler for chaining | 此处理器以便链式调用
    • onAnyStart

      public SimpleSaxHandler onAnyStart(BiConsumer<String, Map<String,String>> callback)
      Registers a callback for any element start. 注册任意元素开始的回调。
      Parameters:
      callback - the callback | 回调
      Returns:
      this handler for chaining | 此处理器以便链式调用
    • onAnyEnd

      public SimpleSaxHandler onAnyEnd(Consumer<String> callback)
      Registers a callback for any element end. 注册任意元素结束的回调。
      Parameters:
      callback - the callback | 回调
      Returns:
      this handler for chaining | 此处理器以便链式调用
    • startElement

      public void startElement(String uri, String localName, String qName, Map<String,String> attributes)
      Description copied from interface: SaxHandler
      Called when an element starts. 当元素开始时调用。
      Specified by:
      startElement in interface SaxHandler
      Parameters:
      uri - the namespace URI | 命名空间 URI
      localName - the local name | 本地名称
      qName - the qualified name | 限定名称
      attributes - the element attributes | 元素属性
    • endElement

      public void endElement(String uri, String localName, String qName)
      Description copied from interface: SaxHandler
      Called when an element ends. 当元素结束时调用。
      Specified by:
      endElement in interface SaxHandler
      Parameters:
      uri - the namespace URI | 命名空间 URI
      localName - the local name | 本地名称
      qName - the qualified name | 限定名称
    • characters

      public void characters(String content)
      Description copied from interface: SaxHandler
      Called for character content. 为字符内容调用。
      Specified by:
      characters in interface SaxHandler
      Parameters:
      content - the character content | 字符内容