Oni Central Forum

A forum for the Oni community

You are not logged in.

#1 02/08/14 18:02

s10k
Member
Registered: 01/14/07
Website

XmlTools2

Readme.txt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XmlTools v2.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

----------------------------------
Description:
----------------------------------

XmlTools is a command-line modding tool that operates on XML files.

It supports many operations in XML files and even non implemented operations using custom javascript code.

It is developed in C++ and works in both Mac OS and Windows.

An additional guide with examples can be read here: http://wiki.oni2.net/XmlTools

----------------------------------
Full Features:
----------------------------------

-Update all values in a set of XML elements. (e.g., to reposition an OBAN animation or adjust pelvis height for a TRAM).

-Inverts a set of XML elements. (e.g., invert an OBAN animation).

-Add new values to a set of XML elements (e.g., add the 'unkillable' flag to some characters in a level).

-Remove values from a set of XML elements (e.g., remove boss shields from characters in a level).

-Replace values in a set XML elements (e.g., increase the health of characters by replacing the old HP value).

-Patch file support allows the modder to list multiple commands in a file, to all be performed at once.

-Add custom XML to existing files (patch only).

-Remove XML from existing files (patch only).

-Select elements using element name, parent element name, attribute name/value and XPath 1.0.

-Powerful custom XML editing using javascript (for what you can't do with native operations) (patch only).

----------------------------------
Installation (standalone version):
----------------------------------

Extract XmlTools folder to any place in your computer. Open it with command line on windows or terminal in Mac OS.

----------------------------------
Change Log:
----------------------------------
2.0, 08-02-2014
-Rewrite XmlTools fom the scratch from C# to C++ in order to increase (much!) the performance of the program
-The program now uses the following libraries: Qt5, pugixml and jsxml js library
-The commands were simplified (they now use unix like syntax)
-Update node operation (old updatechainvalues) it now receives the DIFFERENCE between the old value
and the new value instead of the new value
-Update node operation (old updatechainvalues) relation parameter was removed
-The program now only edits files with .xml extension
-The program now only reads patches files with .patch or .oni-patch extensions
-The patch files now have a XmlTools minimum version
-Some patch files operations were renamed and some extra arguments added
-Added option to select xml elements by attribute name and value
-Added option to select xml elements by XPath 1.0 (should reduce further the need of javascript)
-The insertion of xml via patch now support multiple nodes inside <xml></xml> tags
-Added exclusive option for AEI which allows AEI to pass a list of .oni-patches to process

XmlTools needed an update. It needed improved performance, especially in javascript custom operations. It needed simpler commands. It needed documentation.

With XmlTools2 all of these should be improved.

Performance got an boost about 4 seconds vs 100 miliseconds for the same core packages.  Got also a great improvement in javascript performance and usage.

The commands were simplified. They now follow a unix usual style, global arguments no more, it's just options and options values now.

The documentation is currently being worked on. You now have a main page: http://wiki.oni2.net/XmlTools with the options and overview of what they do and was created a new page that will contains a more detailed description for each command and where each command will have an example: http://wiki.oni2.net/XmlTools/Full_Documentation.

All the features from the 0.9 version were maintained and new features were added (check the log above).

I've also updated all the patches packages of XmlTools 0.9 to the XmlTools 2.0 version, so the authors don't need to perform any update in their packages, they will all work with the new 2.0 version from the day one.

This should bring more flexibilty to the Oni modding.

Thanks to Alloc and Iritscen for all their time and support during its development.

Offline

#2 02/08/14 19:02

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: XmlTools2

I'm happy to see 2.0 coming out, it's quite a nice little program now.  Someone could probably use it for all sorts of XML operations, but we only care about how it benefits Oni ^_^

The main effect this will have on the average player is allowing them to install mods together that formerly would have conflicted (overwritten each other).  This is done by making a mod use XML patches instead of full .oni files, so it's not automatically going to benefit any existing mods.

XmlTools 0.9 also allowed this patching method, but we didn't take advantage of it very much because of performance/compatibility issues.  Now we will be modifying certain mods so they take advantage of the patching mechanism on a wider level.  This will allow a proper release of, for instance, the glass-breaking mod from earlier AEs.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#3 02/09/14 07:02

Tracker
Member
From: Germany
Registered: 01/14/07

Re: XmlTools2

Great work! It seems that Oni AE runs more stable after I installed the XML update smile
While recording Oni AE ran stable with the mods I had chosen.
But after recording an Oni AE level I got an "Sorry, Oni has run out memory" error when I tried to start Oni AE again for the next record.
Everytime after this error I had to close Oni AE and had start it again, but after the XML update Oni AE runs stable in combination with my capture program.
I look forward to the glass-breaking mod smile


ONI is the best game in the universe!

Offline

#4 02/09/14 22:02

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: XmlTools2

Nice work on the update, now it is time to make a GUI in Vago for XmlTools smile

Offline

#5 02/10/14 08:02

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

I don't have the time. neutral So don't expect one from me soon.

Anyway maybe someone take the time to do a GUI.

Offline

#6 02/10/14 09:02

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: XmlTools2

I'm not really sure that a GUI would be right for this app.  XmlTools is basically a programming tool for use by tech-savvy modders.  It seems like a GUI would have to be very complex in order to fully encapsulate what the underlying language can do, or else it would do almost nothing except provide a window in which to type code and select a folder to run it in.  It wouldn't be worth the time to make it.


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#7 02/10/14 10:02

EdT
Moderator
From: Los Angeles, CA
Registered: 01/13/07
Website

Re: XmlTools2

This is how I use a GUI for XmlTools on the Mac:

XmlTools.jpg

The dropdown menu has options for modifying the Rotation, Time, Translation for OBANs and Position, Rotation in BINAs.
I don't need all the features of XmlTools, so my GUI reflects that.

I was thinking about modders on Windows, how a GUI for XmlTools will make it easier for them to modify TRAMs and other files.

Last edited by EdT (02/10/14 12:02)

Offline

#8 03/02/14 11:03

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

Updated:

----------------------------------
Change Log:
----------------------------------
2.0a, 02-03-2014
-Added multithreading support for @CUSTOM_CODE (performance may increase over 3 times in a quadcore)
-Now a warning is given if a user javascript code (@CUSTOM_CODE) takes too much time to finish
-Fixed small bug when applying patches with @COMMAND + --no-verbose where some std output should not be displayed
-Added double single quotes in @COMMAND to allow single quotes in XPath expressions

Last edited by s10k (03/02/14 12:03)

Offline

#9 10/30/16 11:10

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

Updated:

----------------------------------
Change Log:
----------------------------------
2.0c, 30-10-2016
-Fixed bug in --update-elements operation
-Added some exception handling
-Started migrating some of the source code to C++14
-Upgraded pugixml to latest 1.7 version
-Dropped openmp since apple clang doesn't support it, using Qt threads mechanisms now

I've also added a XmlTools interface in Vago, more info check here:
http://oni.bungie.org/forum/viewtopic.php?id=2385

Offline

#10 10/05/17 12:10

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

Updated:

----------------------------------
Change Log:
----------------------------------
2.0d, 05-10-2017
-Fixed bug in the processing of javascript files for XML custom processing (some files were not being processed)
-Some code refactoring to make the code more modular and easier to build (now uses s10k's "shared" libraries for
qtcreator projects)

Offline

#11 10/05/17 13:10

Iritscen
Moderator
From: NC, USA
Registered: 10/22/07

Re: XmlTools2

Nice to see you're still updating this handy tool.  I'm just starting to get back to work on some of my own long-neglected projects....


Check out the Anniversary Edition Seven at ae.oni2.net!

Offline

#12 02/16/19 12:02

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

Updated:

----------------------------------
Change Log:
----------------------------------
2.0e, 16-02-2019
-Fixed bug in the processing of patch files when the target XML contained an apostrophe (') in the path
----------------------------------

Last edited by s10k (02/16/19 12:02)

Offline

#13 09/08/19 08:09

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

Updated:

----------------------------------
Change Log:
----------------------------------
2.0f, 08-09-2019
-Fixed a deadlock in custom js code
----------------------------------

Offline

#14 03/09/22 13:03

s10k
Member
Registered: 01/14/07
Website

Re: XmlTools2

Updated:

----------------------------------
Change Log:
----------------------------------
2.0g, 09-03-2022
-Fixed bug on add-values when the element is empty (the application was adding a space)
-Qt libraries on macOS upgraded to 5.15.2 (minimum compatible macOS: macOS High Sierra)
----------------------------------

Offline

Board footer

Powered by FluxBB