# xml2o
**Repository Path**: mirrors_taoqf/xml2o
## Basic Information
- **Project Name**: xml2o
- **Description**: Helps you convert XML into an object for easy reading.
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-26
- **Last Updated**: 2026-03-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# xml2o
Helps you convert XML into an object for easy reading.
## Getting Started
Install the package:
```bash
npm i -S xml2o
```
Let's convert XML from stream:
```typescript
import {convertStream} from 'xml2o';
import {createReadStream} from 'fs';
const node = convertStream(createReadStream('/path/to/file.xml'));
```
We can doing same with string:
```typescript
import {convertString} from 'xml2o';
const node = convertString('foo');
```
## Examples
A SimpleXML-like Node object made to help you read XML structures in JS without DOM.
**Check a node**
```typescript
import {convertString} from 'xml2o';
const xml = `
foo
`;
const node = convertString(xml);
console.log(node);
```
**Root of a node, name and inner text**
```typescript
console.log(
node.name,
node.text
);
```
**Child node name, text and attributes**
```typescript
console.log(
node[0].name,
node[0].text,
node[0].getAttribute('bar'),
node[0].getAttributeNode('bar'),
node[0].getAttributes()
)
```
**Node children**
```typescript
console.log(...node.map(child => child.name));
```
**Node query**
```typescript
import {convertString} from 'xml2o';
const xml = `
`;
const node = convertString(xml);
console.log(node.query('/a')); // found /node/a
console.log(node.query('a')); // found /node/a, /node/b/a, /node/b/c/a, /node/d/c/a
console.log(node.query('c/a')); // found /node/b/c/a, /node/d/c/a
console.log(node.query('/d/c')); // found /node/d/c
console.log(node.query('b/a')); // found /node/b/a
```
## Documentation
| Method | Arguments | Return | Description |
|---|---|---|---|
| convertString | `XMLString` | `Node` | XML string
| convertStream | `stream` | `Node` | Readable stream
### Node
Node class used to present XML nodes as objects. Every Node object has following properties and methods:
**Properties**
| Property | Description |
|---|---|
| `name` | Tag name
| `local` | Tag local name
| `prefix` | Tag prefix
| `parent` | Parent Node
| `root` | Root Node
**Methods**
| Method | Arguments | Return | Description |
|---|---|---|---|
| `getAttribute` | `name, uri?` | `string` | Returns an attribute value
| `getAttributeNode`| `name, uri?` | `Attribute` | Returns an attribute
| `getAttributes` | | `Array` | Returns an array of attributes values
| `hasAttribute` | `name, uri?` | `boolean` | Returns true if an attribute is exists
| `query` | `name, uri?` | `Array` | Returns matched nodes in any level
# Note
Code examples written with modules so you may need babel, typescript or other to run its or rewrite ES6 imports to:
```js
const createString = require('xml2o').createString;
```
This library written in ES6 and if you need ES3 build you can tell me i'll make support for older JS versions.
# License
MIT