XmlTools: Difference between revisions
m (→Overview: XmlTools works on all XML, duh) |
Script 10k (talk | contribs) (some fixes) |
||
Line 29: | Line 29: | ||
:::On the Mac, be sure to use / rather than \ in paths. The following instructions are for Windows by default. | :::On the Mac, be sure to use / rather than \ in paths. The following instructions are for Windows by default. | ||
=== | ===Global arguments=== | ||
You | You may use these arguments with each command listed in the next section: | ||
{| | {| | ||
|<tt>-filename:<XML file></tt>||Specifies file to modify (backup made by default) | |<tt>-filename:<XML file></tt>||Specifies file to modify (allows wildcards '*','?') (backup made by default) (when not used will apply the operation over all the xml files in the same directory of xmlTools.exe)||'''Optional''' | ||
|- | |- | ||
|<tt>-element:<XML tag></tt>||Specifies XML tag to look for in the file | |<tt>-element:<XML tag></tt>||Specifies XML tag to look for in the file||'''Required''' | ||
|- | |- | ||
|<tt>-parelement:<XML tag></tt>|| | |<tt>-parelement:<XML tag></tt>||Specifies XML tag that contains -element tag to avoid override elements that have the same name but have different parent elements ||'''Optional''' | ||
|} | |||
e.g.: | |||
<pre> | |||
<xml> | |||
<Volume> | |||
<Min>1</Min> | |||
<Max>1</Max> | |||
</Volume> | |||
<Pitch> | |||
<Min>1</Min> | |||
<Max>1</Max> | |||
</Pitch> | |||
<xml> | |||
</pre> | |||
In the above code you can differentiate the "Min" elements by it's parent element. So you can use -element:Min -parelement:Pitch to refer to "Min" of "Pitch" element. | |||
{| | |||
|- | |- | ||
|<tt>-nobackups</tt>||XmlTools will not create a backup file (speeds up operations) | |<tt>-nobackups</tt>||XmlTools will not create a backup file (speeds up operations)||'''Optional''' | ||
|- | |- | ||
|<tt>-debug</tt>|| | |<tt>-debug</tt>||Not used yet. It will be probably used to output some debugging information in the future.||'''Optional''' | ||
|} | |} | ||
===Command-line operations=== | ===Command-line operations=== | ||
<tt>updatechainvalues -newvalue:<quoted string> [-valpositions:<quoted string>] [-valrelation:<quoted string>]</tt> | <tt>updatechainvalues -newvalue:<quoted string> [-valpositions:<quoted string>] [-valrelation:<quoted string>]</tt> | ||
: | :Update a XML chain, starting at the -newvalue; | ||
:<tt>-valpositions</tt> (optional) is zero-indexed and can be a single value or a space-separated list, e.g. <tt>-valpositions=0 1 4</tt>; | :<tt>-valpositions</tt> (optional) is zero-indexed and can be a single value or a space-separated list, e.g. <tt>-valpositions=0 1 4</tt>; | ||
:<tt>-valrelation</tt> (optional) means ??? | :<tt>-valrelation</tt> (optional) means ??? | ||
<tt>invert</tt> | <tt>invert</tt> | ||
:Inverts | :Inverts a XML chain | ||
<tt>addvalue -value:<quoted string></tt> | <tt>addvalue -value:<quoted string></tt> | ||
Line 63: | Line 82: | ||
<tt>replaceall -value:<string> [-valpositions:<quoted string>]</tt> | <tt>replaceall -value:<string> [-valpositions:<quoted string>]</tt> | ||
:Replaces value in element with new value, no matter its previous value | :Replaces value in element with new value, no matter its previous value | ||
<tt>showerrtypes</tt> | |||
:Show errors numbers and they internal name | |||
<tt>patchfile [-forceinfiles:<file names>]</tt> | <tt>patchfile [-forceinfiles:<file names>]</tt> | ||
:Changes <tt>-filename</tt> argument to refer to a patch file and applies this patch to | :Changes <tt>-filename</tt> argument to refer to a patch file and applies this patch to the specified files using the [File<quoted file name>] argument, | ||
:or to named files with <tt>-forceinfiles</tt> argument (allows | :or to named files with <tt>-forceinfiles</tt> argument (allows wildcards '*','?'); see below for patch commands | ||
===Patch file operations=== | ===Patch file operations=== | ||
To create a list of commands within one file that you can pass to XmlTools to execute all at once, create a plain-text file that uses the following commands and pass it to XmlTools using the <tt>patchfile</tt> command documented above. See [[Making a patch mod|HERE]] for instructions on making a patch mod for the AE. | To create a list of commands within one file that you can pass to XmlTools to execute all at once, create a plain-text file that uses the following commands and pass it to XmlTools using the <tt>patchfile</tt> command documented above. See [[Making a patch mod|HERE]] for instructions on making a patch mod for the AE. | ||
<tt>@ADDTO Element <quoted tag name> [ParentElement <quoted tag name>]</tt> | <tt>@ADDTO Element <quoted tag name> [ParentElement <quoted tag name>] [File<quoted file name>]</tt> | ||
:Adds the raw XML that follows to the named array tag, e.g.: | :Adds the raw XML that follows to the named array tag, e.g.: | ||
@ADDTO Element "Particles" | @ADDTO Element "Particles" | ||
Line 83: | Line 105: | ||
</xml> | </xml> | ||
<tt>@REMOVE Element <quoted tag name> ParentElement <quoted tag name></tt> | <tt>@REMOVE Element <quoted tag name> [ParentElement <quoted tag name>] [File<quoted file name>]</tt> | ||
:Removes named element from the array tag named by ParentElement | :Removes named element from the array tag named by ParentElement | ||
Line 89: | Line 111: | ||
:Runs any of the commands available under "Command-line operations" above. Use standard command-line syntax described in that section, including <tt>-filename</tt>, e.g.: | :Runs any of the commands available under "Command-line operations" above. Use standard command-line syntax described in that section, including <tt>-filename</tt>, e.g.: | ||
@COMMAND invert -element:Height -parelement:Heights -filename:test.xml | @COMMAND invert -element:Height -parelement:Heights -filename:test.xml | ||
Note that if you don't specify the optional [File<quoted file name>] argument the operation will applied over all the XML files in the same directory of xmlTools.exe. | |||
Also this [File<quoted file name>] allows wildcards ('*','?'). | |||
[[Category:Bi-platform modding tools]][[Category:Completed modding tools]] | [[Category:Bi-platform modding tools]][[Category:Completed modding tools]] |
Revision as of 16:20, 14 April 2013
This page is unfinished. Can you fill in any missing information? |
Overview
XmlTools is a command-line modding tool that operates on XML files, especially those exported by OniSplit. It was developed in C# and works in both Mac OS X (Mono required) and Windows (.NET required).
The initial version was written to help with the development of the Old China level mod. It was then developed further for the purposes of the AE.
It can be used as a standalone tool or as a base for another tools.
Links
- Download the tool package here (actual program folder found inside the plain/xxx_only/Tools/ folder).
- XmlTools is used by the AEI to apply XML patches, as explained HERE.
- XmlTools is used along with OniSplit as the backend for the GUI tool Vago.
Features
- Modify a chain of values (for example, to reposition an OBAN animation or adjust pelvis height for a TRAM).
- Invert a chain of values (for example, invert an OBAN animation).
- Add new values to XML elements (for example, add the 'unkillable' flag to some characters in a level).
- Remove values from XML elements (for example, remove boss shields from characters in a level).
- Replace values in XML elements (for example, increase the health of characters by replacing the old HP value).
- Add custom XML to existing files (patch only)
- Remove XML from existing files (patch only)
- Patch file support allows the modder to list multiple commands in a file, on separate lines, to all be performed at once.
Using it
The following actions are listed when calling XmlTools with no options passed in. You can get the version with the argument "version".
- The commands below must be preceded by either xmlTools.exe (Windows) or mono xmlTools.exe (Mac)
- If xmlTools.exe is not in the current folder, you can provide the full/relative path to it or set the path variable.
- On the Mac, be sure to use / rather than \ in paths. The following instructions are for Windows by default.
- If xmlTools.exe is not in the current folder, you can provide the full/relative path to it or set the path variable.
Global arguments
You may use these arguments with each command listed in the next section:
-filename:<XML file> | Specifies file to modify (allows wildcards '*','?') (backup made by default) (when not used will apply the operation over all the xml files in the same directory of xmlTools.exe) | Optional |
-element:<XML tag> | Specifies XML tag to look for in the file | Required |
-parelement:<XML tag> | Specifies XML tag that contains -element tag to avoid override elements that have the same name but have different parent elements | Optional |
e.g.:
<xml> <Volume> <Min>1</Min> <Max>1</Max> </Volume> <Pitch> <Min>1</Min> <Max>1</Max> </Pitch> <xml>
In the above code you can differentiate the "Min" elements by it's parent element. So you can use -element:Min -parelement:Pitch to refer to "Min" of "Pitch" element.
-nobackups | XmlTools will not create a backup file (speeds up operations) | Optional |
-debug | Not used yet. It will be probably used to output some debugging information in the future. | Optional |
Command-line operations
updatechainvalues -newvalue:<quoted string> [-valpositions:<quoted string>] [-valrelation:<quoted string>]
- Update a XML chain, starting at the -newvalue;
- -valpositions (optional) is zero-indexed and can be a single value or a space-separated list, e.g. -valpositions=0 1 4;
- -valrelation (optional) means ???
invert
- Inverts a XML chain
addvalue -value:<quoted string>
- Adds value or space-separated list of values into an element
removevalue -value:<quoted string>
- Removes value or space-separated list of values from an element
replacevalue -oldvalue:<string> -newvalue:<string>
- Replaces specified old value, if found, with new value
replaceall -value:<string> [-valpositions:<quoted string>]
- Replaces value in element with new value, no matter its previous value
showerrtypes
- Show errors numbers and they internal name
patchfile [-forceinfiles:<file names>]
- Changes -filename argument to refer to a patch file and applies this patch to the specified files using the [File<quoted file name>] argument,
- or to named files with -forceinfiles argument (allows wildcards '*','?'); see below for patch commands
Patch file operations
To create a list of commands within one file that you can pass to XmlTools to execute all at once, create a plain-text file that uses the following commands and pass it to XmlTools using the patchfile command documented above. See HERE for instructions on making a patch mod for the AE.
@ADDTO Element <quoted tag name> [ParentElement <quoted tag name>] [File<quoted file name>]
- Adds the raw XML that follows to the named array tag, e.g.:
@ADDTO Element "Particles" <xml> <Particle> <Start>0</Start> <End>45</End> <Bone>Head</Bone> <Name>glass_break</Name> </Particle> </xml>
@REMOVE Element <quoted tag name> [ParentElement <quoted tag name>] [File<quoted file name>]
- Removes named element from the array tag named by ParentElement
@COMMAND <command-line string>
- Runs any of the commands available under "Command-line operations" above. Use standard command-line syntax described in that section, including -filename, e.g.:
@COMMAND invert -element:Height -parelement:Heights -filename:test.xml
Note that if you don't specify the optional [File<quoted file name>] argument the operation will applied over all the XML files in the same directory of xmlTools.exe.
Also this [File<quoted file name>] allows wildcards ('*','?').