Difference between revisions of "Xml Module"

From SolarStrike wiki
Jump to: navigation, search
m (→‎xml.parse)
(JvPbXhyji)
Line 1: Line 1:
−
== xml.parse ==
+
Knckoed my socks off with knowledge!
−
'''xml.parse(stream)'''
 
−
'''xml.parse(stream, haltOnError)'''
 
−
 
 
−
Parses an already-opened file or a string. See [[Xml_Module#xml.open|xml.open]] if you want the file to be opened for you, as well. If 'haltOnError' is not specified, it is assumed to be true.
 
−
 
 
−
If an error occurs, this function will return nil as the first argument followed by the error message, line, column number, and character position. Otherwise, it will return the root XML node.
 
−
 
 
−
'''Example:'''
 
−
<source lang="lua">
 
−
-- Parse a string
 
−
local xmlString = "<root><tag>Testing</tag></root>";
 
−
local root, err = xml.parse(xmlString);
 
−
 
 
−
if( root == nil ) then
 
−
  printf("Oh no! An error occured: %s\n", err);
 
−
end
 
−
 
 
−
-- Or, parse an XML file we already have opened:
 
−
local file = io.open("file.xml");
 
−
local root, err = xml.parse(file);
 
−
file:close();
 
−
 
 
−
if( root == nil ) then
 
−
  printf("Oh no! An error occured: %s\n", err);
 
−
end
 
−
</source>
 
−
 
 
−
== xml.open ==
 
−
'''xml.open(filename)'''
 
−
 
 
−
Opens and parses an XML file, and returns a class containing the root node. If 'haltOnError' is not specified, it is assumed to be true.
 
−
 
 
−
If an error occurs, this function will return nil as the first argument followed by the error message, line, column number, and character position. Otherwise, it will return the root XML node.
 
−
 
 
−
'''Example:'''
 
−
<source lang="xml">
 
−
<root name="Root" type="Example">
 
−
<elem1>
 
−
<subelement value="1" />
 
−
<subelement value="2" />
 
−
<subelement value="3" />
 
−
</elem1>
 
−
 
 
−
<elem2 number="1234" string="This is a string" />
 
−
 
 
−
<elem3>Element 3 has a text value</elem3>
 
−
 
 
−
<elem4 num="123">999</elem4>
 
−
</root>
 
−
</source>
 
−
 
 
−
<source lang="lua">
 
−
function main()
 
−
  local root = xml.open(getExecutionPath() .. "/test.xml");
 
−
  printf("root._NAME: %s\n", root:getName()); -- "_NAME" should be 'root'
 
−
  printf("root.name: %s\n", root:getAttribute("name"));    -- "name" will be set in XML
 
−
  printf("root.attribute count: %d\n", root:getAttributeCount());
 
−
 
 
−
  local elem1 = root:getElement("elem1");
 
−
  elements = elem1:getElements();
 
−
  printf("\n---ELEM1---\n");
 
−
  for i,v in pairs(elements) do
 
−
    local name = v:getName();
 
−
    local value = v:getAttribute("value");
 
−
    printf(" ==> [%s]: %s\n", name, value);
 
−
  end
 
−
 
 
−
 
 
−
  local elem2 = root:getElement("elem2");
 
−
  printf("\n---ELEM2---\n");
 
−
  printf("elem2.number: %d\n", elem2:getAttribute("number"));
 
−
  printf("elem2.string: %s\n", elem2:getAttribute("string"));
 
−
 
 
−
  local elem3 = root:getElement("elem3");
 
−
  printf("\n---ELEM3---\n");
 
−
  printf("elem3._VALUE: %s\n", elem3:getValue());
 
−
 
 
−
  local elem4 = root:getElement("elem4");
 
−
  printf("\n---ELEM4---\n");
 
−
  local val = elem4:getValue();
 
−
  local num = elem4:getAttribute("num");
 
−
 
 
−
  if( num == nil ) then
 
−
    printf("num is nil\n");
 
−
  end
 
−
 
 
−
  printf("elem4.num(type): %s\n", type(num));
 
−
  printf("elem4.num: %d\n", num);
 
−
 
 
−
  printf("elem4._VALUE(type): %s\n", type(val));
 
−
  printf("elem4._VALUE: %d\n", val);
 
−
end
 
−
startMacro(main);
 
−
</source>
 
−
 
 
−
== XML Node class ==
 
−
'''Note:''' Several XML node member functions have a second optional argument that allows you to specify a return type. This should be used to ensure that the value you are retrieving is casted to the type you want. If you use this optional argument, 'type' should be a string of one of the following: "string", "number", or "boolean".
 
−
 
 
−
 
 
−
'''Node:getElement(name)'''
 
−
'''Node:getElement(name, type)'''
 
−
 
 
−
'''Node:getElement(index)'''
 
−
'''Node:getElement(index, type)'''
 
−
 
 
−
Return an element (node) inside this node with the name 'name' or index 'index'.
 
−
 
 
−
 
 
−
'''Node:getElements()'''
 
−
 
 
−
Returns all elements (nodes) inside this node.
 
−
 
 
−
 
 
−
'''Node:getElementCount()'''
 
−
 
 
−
Returns the number of elements (nodes) inside this node.
 
−
 
 
−
 
 
−
'''Node:getAttribute(name)'''
 
−
'''Node:getAttribute(name, type)'''
 
−
 
 
−
'''Node:getAttribute(index)'''
 
−
'''Node::getAttribute(index, type)'''
 
−
 
 
−
Returns an attribute for this node with the name 'name' or index 'index'.
 
−
 
 
−
 
 
−
'''Node:getAttributes()'''
 
−
 
 
−
Returns all attributes for this node.
 
−
 
 
−
 
 
−
'''Node:getAttributeCount()'''
 
−
 
 
−
Returns the number of attributes for this node.
 
−
 
 
−
 
 
−
'''Node:getName()'''
 
−
 
 
−
Returns the name of this node.
 
−
 
 
−
 
 
−
'''Node:getValue()'''
 
−
'''Node:getValue(type)'''
 
−
 
 
−
Returns the value of this node.
 

Revision as of 19:55, 20 July 2011

Knckoed my socks off with knowledge!