Tree is a two-dimensional binary-safe format for representing structured data. Easily readable by both human and computer. Simple, compact, fast, expressive and extensible. Comparing it with other popular formats, you can make the following comparison table:| More is better | Json | XML | Yaml | INI | Tree |
|---|---|---|---|---|---|
| Human comprehension | 3 | one | four | five | five |
| Easy editing | 3 | one | four | five | five |
| Arbitrary hierarchy | 3 | 3 | 3 | one | five |
| Ease of implementation | 3 | 2 | one | five | five |
| Speed parsing / serialization | 3 | one | one | five | five |
| Serialized Size | 3 | one | four | five | five |
| Threading support | 0 | 0 | five | five | five |
| Binary security | 3 | 0 | 0 | 0 | five |
| Prevalence | five | five | 3 | 3 | 0 |
| Editors support | five | five | 3 | five | one |
| Support programming languages | five | five | 3 | five | one |
{ "users" : [ { "name" : "Alice" , age : 20 } ] }
<users><user><name>Alice</name><age>20</age></user></users>
{ "description" : "Hello, Alice!\nHow do you do?" }
<greeting>
Hello, <b>Alice</b>!<br/>
How do you do?
</greeting>
<greeting>
Hello, <a href="http://example.org/user/alice?ref=xe3o7rubvo283xb">Alice</a>!<br/>
How do you do?
</greeting>
<title>"Rock&roll" = life</title>
{ "title" : "\"Rock&roll\" = life" }














<html>
<head>
<title> & </title>
</head>
<body>
<h1>!</h1>
<p>, ?</p>
</body>
</html>

<script type="text/javascript" src="index.js" />

<link
rel="canonical"
href="/?article=rock%26roll&author=Nin+Jin"
/>

<!--<a href="/">top</a>-->

<?xml version="1.0" stanalone="yes" ololo?>

function getEl( id ){
return document.getElementById( id )
}
[
{ "function": {
"name": "getEl",
"args": [ "id" ],
"body": [
{ "return": [
{ "get": "document" },
{ "call": {
"name": "getElementById",
"args": [
{ "get": "id" }
]
}}
]}
]
}}
]
[ [ "function",
"getEl",
[ "id" ],
[ "return",
[ [ "get",
"document" ],
[ "call",
"getElementById",
[ "get", "id" ]
]
]
]
]
]

string data = cast(string) read( "path/to/file.tree" ); // read from file
Tree tree = Tree.parse( data , "http://example.org/source/uri" ); // parse to tree
Tree userNames = tree.select( "user name" ); // returns name-nodes
Tree userNamesValues = tree.select( "user name " ); // returns value-nodes
string name = userNames[0].name; // get node name
string stringValue = userNames[0].value; // get value as string with "\n" as delimiter
uint intValue = userNames[0].value!uint; // get value converted from string to another type
Tree[] childs = tree.childs; // get child nodes array
string uri = tree.uri; // get uri like "http://example.org/source/uri#3:2"
string data = tree.toString(); // returns string representation of tree
tree.pipe( stdout ); // prints tree to output buffer
! City : table
ID : field
type : int 11
null : false
unique : true
Name : field
type : char 35
null : true
unique : false
City
ID : 1
Name : \Kabul
City
ID : 4079
Name : \Rafah
City
ID : 23023
Name : \Moscow
Source: https://habr.com/ru/post/248147/
All Articles