mirror of
https://gitee.com/many2many/java-web.git
synced 2025-01-11 14:40:55 +08:00
xml、json
This commit is contained in:
parent
eb02a88d80
commit
5511b74f2e
@ -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文档通常有两种方法:使用DOM(Document Object Model)解析器和使用SAX(Simple 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的数据类型。
|
||||
- **缩进和换行**: 使用适当的缩进和换行来提高可读性。
|
||||
|
Loading…
Reference in New Issue
Block a user