# informat.xml xml操作相关

## 概述

使用`informat.xml`执行XML的读写操作


## parse

读取XML内容并返回Document对象。如果xml的内容为null或者空字符串将会返回null，如果内容结构不是正确的xml格式，将会抛出异常

```javascript
informat.xml.parse(xml)
```

| 参数  | 类型     | 描述    |
|-----|--------|-------|
| xml | String | xml内容 |

**返回值**
类型为`org.w3c.dom.Document`

关于w3c Document 的API方法可参见  https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html

以下是一个例子

```js
let doc = informat.xml.parse("<root name='test'>text content</root>");
let name = doc.getDocumentElement().getAttribute("name");
console.log(name);//test
```

## createDocument

创建一个新的Document对象

```javascript
informat.xml.createDocument()
```

**返回值**
类型为`org.w3c.dom.Document`

关于w3c Document 的API方法可参见  https://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html


## doc2xml

将Document对象转换为xml字符串

```javascript
informat.xml.doc2xml(doc, config)
```

| 参数     | 类型       | 描述      |
|--------|----------|---------|
| doc    | Document | xml文档对象 |
| config | Config   | 输出配置    |

config对象的结果如下

```
{
    doctypeSystem:String,//
    doctypePublic:String
    indent:Boolean,//默认为false，是否缩进xml
    indentAmount:Integer,//缩进量长度,默认为0
    standalone:Boolean,xml元素中standalone的值
    version:String,xml元素中version的值
    encoding:String,xml元素中encoding的值
    omitXmlDeclaration:Boolean,//是否不输出xml头
}
```

**返回值**
类型为 `String`

以下是一个例子

:::code-group
```js[调用]
let doc = informat.xml.createDocument();
let rootElement = doc.createElement("company");
doc.appendChild(rootElement);
doc.createElement("staff");
rootElement.appendChild(doc.createElement("staff"));
//
let config = {};
config.doctypeSystem = "doctype system";
config.doctypePublic = "doctype public";
config.indent = true;
config.indentAmount=2;
config.standalone = false;
config.version = "1.1";
config.encoding = "utf-8";
//
let xml = informat.xml.doc2xml(doc, config);
console.log(xml);
```

```xml[返回值]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE company PUBLIC "doctype public" "doctype system">
<company>
    <staff/>
</company>
```
:::

如果`config`设置如下

```
config.omitXmlDeclaration=true;
config.indent=true;
```

输出结果为

```xml
<!DOCTYPE company PUBLIC "doctype public" "doctype system">
<company>
    <staff/>
</company>
```

