Giter VIP home page Giter VIP logo

cannysquirrel / joox Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jooq/joox

0.0 2.0 0.0 489 KB

jOOX - The Power of jQuery Applied to W3C DOM Like JDBC, DOM is a powerful, yet very verbose low-level API to manipulate XML. The HTML DOM an be manipulated with the popular jQuery product, in JavaScript. Why don't we have jQuery in Java? jOOX is jQuery's XML parts, applied to Java.

Home Page: http://www.jooq.org/products

License: Apache License 2.0

Java 99.79% XSLT 0.21%

joox's Introduction

Overview

jOOX stands for Java Object Oriented XML. It is a simple wrapper for the org.w3c.dom package, to allow for fluent XML document creation and manipulation where DOM is required but too verbose. jOOX only wraps the underlying document and can be used to enhance DOM, not as an alternative.

jOOX's fluency is inspired by jRTF, a very nice fluent API for the creation of RTF documents in Java.

jOOX's API itself is inspired by jQuery, an excellent !JavaScript library for efficient DOM manipulation of HTML and XML.

jOOX's name is inspired by jOOQ, a fluent API for SQL building and execution.

Dependencies

None!

Simple example

// Find the order at index 4 and add an element "paid"
$(document).find("orders").children().eq(4).append("<paid>true</paid>");

// Find those orders that are paid and flag them as "settled"
$(document).find("orders").children().find("paid").after("<settled>true</settled>");

// Add a complex element
$(document).find("orders").append(
  $("order", $("date", "2011-08-14"),
             $("amount", "155"),
             $("paid", "false"),
             $("settled", "false")).attr("id", "13");

Examples

For the following examples, we're going to operate on this XML document modelling a library with books and dvds:

XML document

<document>
  <library name="Amazon">
    <books>
      <book id="1">
        <name>1984</name>
        <authors>
          <author>George Orwell</author>
        </authors>
      </book>
      <book id="2">
        <name>Animal Farm</name>
        <authors>
          <author>George Orwell</author>
        </authors>
      </book>
      <book id="3">
        <name>O Alquimista</name>
        <authors>
          <author>Paulo Coelho</author>
        </authors>
      </book>
      <book id="4">
        <name>Brida</name>
        <authors>
          <author>Paulo Coelho</author>
        </authors>
      </book>
    </books>

    <dvds>
      <dvd id="5">
        <name>Once Upon a Time in the West</name>
        <directors>
          <director>Sergio Leone</director>
        </directors>
        <actors>
          <actor>Charles Bronson</actor>
          <actor>Jason Robards</actor>
          <actor>Claudia Cardinale</actor>
        </actors>
      </dvd>
    </dvds>
  </library>
</document>

Java code accessing that document

Like many fluent API's jOOX relies on static methods. Since Java 5 and static imports, using jOOX is very simple. Just import

import static org.joox.JOOX.*;

Using the above static import wrapping DOM objects with jOOX is very simple:

Navigation methods

All navigation methods will return a new wrapper containing references to resulting DOM elements:

// Parse the document from a file
Document document = $(xmlFile).document();

// Wrap the document with the jOOX API
Match x1 = $(document);

// This will get all books (wrapped <book/> DOM Elements)
Match x2 = $(document).find("book");

// This will get all even or odd books
Match x3 = $(document).find("book").filter(even());
Match x4 = $(document).find("book").filter(odd());

// This will get all book ID's
List<String> ids = $(document).find("book").ids();

// This will get all books with ID = 1 or ID = 2
Match x5 = $(document).find("book").filter(ids(1, 2));

// Or, use css-selector syntax:
Match x6 = $(document).find("book#1, book#2");

// This will use XPath to find books with ID = 1 or ID = 2
Match x7 = $(document).xpath("//book[@id = 1 or @id = 2]");

Manipulation methods

All jOOX manipulations are executed on the underlying DOM document:

// This will add a new book
$(document).find("books").append("<book id=\"5\"><name>Harry Potter</name></book>");

// But so does this
$(document).find("book").filter(ids(5)).after("<book id=\"6\"/>");

// This will remove book ID = 1
$(document).find("book").filter(ids(1)).remove();

// Or this
$(document).find("book").remove(ids(1));

Similar tools

Inspiration might be taken from similar products, such as

Unfortunately, all of the above projects focus on HTML, not on arbitrary XML. Besides, jsoup completely rebuilt a proprietary parser / DOM structure, which is incompatible with the org.w3c.dom package.

jOOX uses css-selectors for parsing css selector expressions:

Other platform ports:

joox's People

Contributors

amylka avatar lukaseder avatar xaerxess avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.