java.lang.Object
net.i2p.router.news.NewsXMLParser

public class NewsXMLParserextends Object
Parser for I2P news feeds in Atom format with security filtering.

Processes news.xml files following RFC4287 Atom specification using the UPnP XML parser library with enhanced security features. Handles news entries, metadata, CRL entries, and blocklist data with configurable XHTML filtering.

Provides comprehensive validation and sanitization of news content with support for multiple content types and security levels. Includes configurable handling of potentially dangerous XHTML elements and attributes.

  • Constructor Details

    • NewsXMLParser

      public NewsXMLParser(I2PAppContext ctx)
      Creates a new NewsXMLParser with the given context.
      Parameters:
      ctx - the application context supplying the log manager and property lookups
  • Method Details

    • setXHTMLMode

      public void setXHTMLMode(NewsXMLParser.XHTMLMode mode)
      Sets the action taken when encountering a non-whitelisted XHTML element in the feed content. Must be set before parse(). Default REMOVE_ELEMENT.
      Parameters:
      mode - the XHTML mode to set
    • parse

      public Node parse(File file) throws IOException
      Process the XML file.
      Parameters:
      file - XML content only. Any su3 or gunzip handling must have already happened.
      Returns:
      the root node
      Throws:
      IOException - on any parse error
    • parse

      public Node parse(InputStream in) throws IOException
      Process the XML input stream.
      Parameters:
      in - XML content only. Any su3 or gunzip handling must have already happened.
      Returns:
      the root node
      Throws:
      IOException - on any parse error
    • getEntries

      public List<NewsEntry> getEntries()
      The news entries. Must call parse() first.
      Returns:
      sorted, newest first, null if parse failed
    • getMetadata

      public NewsMetadata getMetadata()
      The news metatdata. Must call parse() first.
      Returns:
      null if parse failed
    • getCRLEntries

      public List<CRLEntry> getCRLEntries()
      The news CRL entries. Must call parse() first.
      Returns:
      unsorted, null if none
    • getBlocklistEntries

      public BlocklistEntries getBlocklistEntries()
      The blocklist entries. Must call parse() first.
      Returns:
      null if none
    • getNodes

      public static List<Node> getNodes(Node node, String name)
      Helper to get all Nodes matching the name.
      Parameters:
      node - the parent node to search
      name - the element name a child node must carry to be returned
      Returns:
      non-null
    • main

      public static void main(String[] args)
      Command-line entry point for testing.
      Parameters:
      args - the feed file to parse, optionally followed by an XHTMLMode name