xml、json

This commit is contained in:
many2many 2024-10-12 13:13:21 +08:00
parent eb02a88d80
commit 5511b74f2e

View File

@ -439,7 +439,102 @@ async function example() {
- **SAX (Simple API for XML)**: 一种基于事件的解析器用于处理大型XML文档。
- **StAX (Streaming API for XML)**: 类似于SAX但提供了更好的性能和内存使用。
#### 3.4.5 XML的最佳实践
当然可以。以下是关于如何在JavaScript中处理XML的详细内容
### 3.4.5 JavaScript中处理XML
在JavaScript中处理XML文档通常涉及以下几个方面
#### 3.4.5.1. 解析XML文档
在JavaScript中解析XML文档通常有两种方法使用DOMDocument Object Model解析器和使用SAXSimple API for XML解析器。DOM解析器创建一个完整的文档树而SAX解析器则逐个事件地处理文档流。
##### DOM解析器
DOM解析器可以将整个XML文档加载到内存中并允许你像操作HTML文档一样操作XML文档。例如
```javascript
function parseXmlWithDomParser(xmlString) {
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
return xmlDoc;
}
const xmlString = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>";
const xmlDoc = parseXmlWithDomParser(xmlString);
console.log(xmlDoc); // 输出 "note"
```
##### AJAX请求
如果你需要从服务器动态加载XML文档可以使用AJAX技术。以下是一个使用`fetch` API的例子
```javascript
async function loadXmlWithFetch(url) {
const response = await fetch(url);
const xmlString = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
return xmlDoc;
}
```
#### 3.4.5.2. 访问XML文档
一旦XML文档被解析成DOM树就可以使用各种DOM方法来访问和操作它。
##### 选择元素
使用`getElementsByTagName`, `getElementsByClassName`, `getElementById`等方法来选择元素:
```javascript
const nodes = xmlDoc.getElementsByTagName("to");
nodes[0].textContent; // 输出 "Tove"
```
##### 修改元素
可以通过DOM节点的`textContent`, `innerHTML`, `appendChild`, `removeChild`等方法来修改文档:
```javascript
nodes[0].textContent = "New Tove";
```
#### 3.4.5.3. 创建和插入新元素
在DOM中创建新元素并将其插入到文档中
```javascript
const newNode = xmlDoc.createElement("new");
const textNode = xmlDoc.createTextNode("New Text");
newNode.appendChild(textNode);
const root = xmlDoc.documentElement;
root.insertBefore(newNode, root.firstChild);
```
#### 3.4.5.4. 序列化XML文档
将DOM树转换回XML字符串或保存到磁盘/发送到服务器:
```javascript
const serializer = new XMLSerializer();
let xmlString = serializer.serializeToString(doc);
```
#### 3.4.5.5. 错误处理
在解析XML时需要注意错误处理确保在解析失败时能够妥善处理
```javascript
try {
const xmlDoc = parser.parseFromString(xmlString, "text/xml");
} catch (error) {
console.error("Error parsing XML:", error);
}
```
#### 3.4.6 XML的最佳实践
- **命名约定**: 使用有意义的元素和属性名称。
- **数据类型**: 正确使用XML的数据类型。
- **缩进和换行**: 使用适当的缩进和换行来提高可读性。
@ -491,7 +586,23 @@ async function example() {
- **Jackson**: 是一个流行的Java库用于JSON的序列化和反序列化。
- **Gson**: Google提供的用于JSON处理的Java库。
#### 3.5.5 JSON的最佳实践
### 3.5.5 JavaScript中处理Json
在JavaScript中通常需要将JavaScript对象转换为JSON字符串或者从JSON字符串解析出JavaScript对象。这个过程可以通过内置的`JSON.stringify()`和`JSON.parse()`方法来完成。
- **序列化** (`JSON.stringify()`): 这个方法用来将一个JavaScript值转化为JSON字符串。例如
```javascript
var person = { name: "John", age: 30, city: "New York" };
var jsonStr = JSON.stringify(person);
```
- **反序列化** (`JSON.parse()`): 这个方法用来将JSON字符串解析成JavaScript值或对象。例如
```javascript
var jsonStr = '{"name":"John","age":30,"city":"New York"}';
var person = JSON.parse(jsonStr);
```
#### 3.5.6 JSON的最佳实践
- **命名约定**: 使用有意义的键名。
- **数据类型**: 正确使用JSON的数据类型。
- **缩进和换行**: 使用适当的缩进和换行来提高可读性。