Nasal library/io: Difference between revisions

Jump to navigation Jump to search
→‎Functions: Finish doc
(→‎Functions: Start writexml() doc)
(→‎Functions: Finish doc)
Line 368: Line 368:
|text = Writes nodes from the [[Property Tree]] to an XML file in FlightGear's [[PropertyList XML files|PropertyList]] format. If the file does not exist, it will be created. If it does, all contents will be overwritten. Returns the filename on success or <code>'''nil'''</code> on error.
|text = Writes nodes from the [[Property Tree]] to an XML file in FlightGear's [[PropertyList XML files|PropertyList]] format. If the file does not exist, it will be created. If it does, all contents will be overwritten. Returns the filename on success or <code>'''nil'''</code> on error.
|param1 = path
|param1 = path
|param1text = Path of the file to write to. If it does not have a <tt>.xml</tt> extension, <tt>.xml</tt> will be added to it.
|param1text = Path of the file to write to as a string. If it does not have a <tt>.xml</tt> extension, <tt>.xml</tt> will be added to it.
|param2 = prop
|param2 = prop
|param2text = Either a property path or a <code>props.Node</code> object. Note that, when the latter is used, results will be more accurate if it refers to a node in the Property Tree, otherwise the node will have to be copied, which may change the node type.
|param2text = Either a property path or a <code>props.Node</code> object. Note that, when the latter is used, results will be more accurate if it refers to a node in the Property Tree, otherwise the node will have to be copied, which may change the node type.
Line 392: Line 392:
{{Nasal doc
{{Nasal doc
|syntax = io.basename(path, node[, indent[, prefix]]);
|syntax = io.basename(path, node[, indent[, prefix]]);
|text = Writes a property tree as returned by readxml() to a file. Children with name starting with <prefix> are again turned into attributes of 
|text = Writes a node structure to an XML file.
their parent. <node> must contain exactly one child, which will become the XML file's outermost element.
|param1 = path
|param1 = path
|param1text = Path to the file as a string.
|param1text = Path of the file to write to as a string. If it does not have a <tt>.xml</tt> extension, <tt>.xml</tt> will be added to it.
|param2 = node
|param2 = node
|param2text =  
|param2text = <code>props.Node</code> object containing the data to write to the file. Attributes should be included as child nodes with a certain '''prefix'''. See also {{func link|readxml()}}. It must also have just one root node.
|param3 = indent
|param3 = indent
|param3text =  
|param3text = Optional string specifying what characters should be used to indent lines. Defaults to one horizontal tab character (<tt>\t</tt>).
|param4 = prefix
|param4 = prefix
|param4text =  
|param4text = Optional string specifying what prefixes attributes will have.
|example1 =  
|example1 = var path = getprop("/sim/fg-home") ~ '/Export/demo.xml';
var tree = {
    "source": {
        ___type: "book", # will become an attribute
        "title": "The Grand Book of Code",
        "author-last": "Echter",
        "author-first": "William C.",
        "year": "2011",
        "publisher": "Pen Publishers",
        "city": "Manchester"
    }
};
var node = props.Node.new(tree);
io.writexml(path, node);
|example2 = var path = getprop("/sim/fg-home") ~ '/Export/demo.xml';
var tree = {
    "source": {
        _attr_type: "book",
        "title": "The Grand Book of Code",
        "author-last": "Echter",
        "author-first": "William C.",
        "year": "2011",
        "publisher": "Pen Publishers",
        "city": "Manchester"
    }
};
var node = props.Node.new(tree);
io.writexml(path, node, "  ", "_attr_"); # indent using two spaces
}}
}}


Navigation menu