# XML DOM - 訪問節點
通過 DOM,您能夠訪問 XML 文檔中的每個節點。
## 嘗試一下 - 實例
下面的實例使用 XML 文件 [books.xml](images/books.xml)。
函數 [loadXMLDoc()](dom-loadxmldoc.html),位于外部 JavaScript 中,用于加載 XML 文件。
[使用節點列表中的索引號來訪問節點](/try/try.php?filename=try_dom_index)
本例使用 getElementsByTagname() 方法來獲取 "books.xml" 中的第三個 <title> 元素。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
document.write(x[2].childNodes[0].nodeValue);
</script>
</body>
</html>
```
[使用 length 屬性來遍歷節點](/try/try.php?filename=try_dom_list_loop)
本例使用 length 屬性來遍歷 "books.xml" 中的所有 <title> 元素。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br>");
}
</script>
</body>
</html>
```
[查看元素的節點類型](/try/try.php?filename=try_dom_root)
本例使用 nodeType 屬性來獲取 "books.xml" 中根元素的節點類型。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
document.write(xmlDoc.documentElement.nodeName);
document.write("<br>");
document.write(xmlDoc.documentElement.nodeType);
</script>
</body>
</html>
```
[遍歷元素節點](/try/try.php?filename=try_dom_loop)
本例使用 nodeType 屬性來處理 "books.xml" 中的元素節點。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{
if (x[i].nodeType==1)
{//Process only element nodes (type 1)
document.write(x[i].nodeName);
document.write("<br>");
}
}
</script>
</body>
</html>
```
[使用節點的關系來遍歷元素節點](/try/try.php?filename=try_dom_navigate)
本例使用 nodeType 屬性和 nextSibling 屬性來處理 "books.xml" 中的元素節點。
```
<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>
<script>
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
{//Process only element nodes (type 1)
document.write(y.nodeName + "<br>");
}
y=y.nextSibling;
}
</script>
</body>
</html>
```
## 訪問節點
您可以通過三種方式來訪問節點:
1\. 通過使用 getElementsByTagName() 方法。
2\. 通過循環(遍歷)節點樹。
3\. 通過利用節點的關系在節點樹中導航。
## getElementsByTagName() 方法
getElementsByTagName() 返回擁有指定標簽名的所有元素。
### 語法
```
_node_.getElementsByTagName(_"tagname"_);
```
### 實例
下面的實例返回 x 元素下的所有 <title> 元素:
```
x.getElementsByTagName("title");
```
請注意,上面的實例僅返回 x 節點下的 <title> 元素。如需返回 XML 文檔中的所有 <title> 元素,請使用:
```
xmlDoc.getElementsByTagName("title");
```
在這里,xmlDoc 就是文檔本身(文檔節點)。
## DOM 節點列表(Node List)
getElementsByTagName() 方法返回節點列表。節點列表是節點的數組。
下面的代碼使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 載入 xmlDoc 中,然后在變量 x 中存儲 <title> 節點的一個列表:
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
```
可通過索引號訪問 x 中的 <title> 元素。如需訪問第三個 <title>,您可以編寫:
```
y=x[2];
```
**注意:**該索引從 0 開始。
在本教程后面的章節中,您將學習更多有關節點列表(Node List)的知識。
## DOM 節點列表長度(Node List Length)
length 屬性定義節點列表的長度(即節點的數量)。
您可以通過使用 length 屬性來遍歷節點列表:
## 實例
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("
");
}
```
實例解釋:
1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 載入 xmlDoc 中
2. 獲取所有 <title> 元素節點
3. 輸出每個 <title> 元素的文本節點的值
## 節點類型(Node Types)
XML 文檔的 **documentElement** 屬性石根節點。
節點的 **nodeName** 屬性是節點的名稱。
節點的 **nodeType** 屬性是節點的類型。
您將在本教程的下一章中學習更多有關節點屬性的知識。
[嘗試一下](/try/try.php?filename=try_dom_root)
## 遍歷節點
下面的代碼遍歷根節點的子節點,同時也是元素節點:
## 實例
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{
if (x[i].nodeType==1)
{//Process only element nodes (type 1)
document.write(x[i].nodeName);
document.write("
");
}
}
```
實例解釋:
1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 載入 xmlDoc 中
2. 獲取根元素的子節點
3. 檢查每個子節點的節點類型。如果節點類型是 "1",則是元素節點
4. 如果是元素節點,則輸出節點的名稱
## 導航節點的關系
下面的代碼使用節點關系導航節點樹:
## 實例
```
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
{//Process only element nodes (type 1)
document.write(y.nodeName + "
");
}
y=y.nextSibling;
}
```
1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 載入 xmlDoc 中
2. 獲取第一個 book 元素的子節點
3. 把 "y" 變量設置為第一個 book 元素的第一個子節點
4. 對于每個子節點(第一個子節點從 "y" 開始),檢查節點類型,如果節點類型為 "1",則是元素節點
5. 如果是元素節點,則輸出該節點的名稱
6. 把 "y" 變量設置為下一個同級節點,并再次運行循環
- XML 基礎
- XML 簡介
- XML 用途
- XML 樹結構
- XML 語法規則
- XML 元素
- XML 屬性
- XML 驗證
- 查看 XML 文件
- 使用 CSS 顯示 XML
- 使用 XSLT 顯示 XML
- XML Javascript
- XMLHttpRequest 對象
- XML Parser
- XML DOM
- XML to HTML
- XML 應用程序
- XML 進階
- XML 命名空間
- XML CDATA
- XML 編碼
- 服務器上的 XML
- XML DOM 高級
- XML 注意事項
- XML 相關技術
- 現實生活中的 XML
- XML 編輯器
- XML - E4X
- DTD 教程
- DTD 簡介
- DTD - XML 構建模塊
- DTD - 元素
- DTD - 屬性
- XML 元素 vs. 屬性
- DTD - 實體
- DTD 驗證
- DTD - 來自網絡的實例
- XML DOM
- XML DOM 簡介
- XML DOM 節點
- XML DOM 節點樹
- XML DOM 解析器
- XML DOM 加載函數
- XML DOM - 屬性和方法
- XML DOM - 訪問節點
- XML DOM 節點信息
- XML DOM 節點列表
- XML DOM 遍歷節點樹
- XML DOM 瀏覽器差異
- XML DOM - 導航節點
- XML DOM 獲取節點值
- XML DOM 改變節點值
- XML DOM 刪除節點
- XML DOM 替換節點
- XML DOM 創建節點
- XML DOM 添加節點
- XML DOM 克隆節點
- The XMLHttpRequest 對象
- XML DOM 節點類型
- XML DOM - Node 對象
- XML DOM - NodeList 對象
- XML DOM - NamedNodeMap 對象
- XML DOM - Document 對象
- XML DOM - DocumentImplementation 對象
- XML DOM - DocumentType 對象
- XML DOM - ProcessingInstruction 對象
- XML DOM - Element 對象
- XML DOM - Attr 對象
- XML DOM - Text 對象
- XML DOM - CDATASection 對象
- XML DOM - Comment 對象
- XMLHttpRequest 對象
- XML DOM Parse Error 對象
- XML DOM 解析器錯誤
- XSLT 教程
- XSL 語言
- XSLT 簡介
- XSLT 瀏覽器
- XSLT - 轉換
- XSLT <xsl:template> 元素
- XSLT <xsl:value-of> 元素
- XSLT <xsl:for-each> 元素
- XSLT <xsl:sort> 元素
- XSLT <xsl:if> 元素
- XSLT <xsl:choose> 元素
- XSLT <xsl:apply-templates> 元素
- XSLT - 在客戶端
- XSLT - 在服務器端
- XSLT - 編輯 XML
- XML 編輯器
- XSLT 元素參考手冊
- XSLT 函數
- XPath 教程
- XPath 簡介
- XPath 節點
- XPath 語法
- XPath 軸(Axes)
- XPath 運算符
- XPath Examples
- XPath、XQuery 以及 XSLT 函數函數參考手冊
- 函數參考手冊
- XQuery 教程
- XQuery 簡介
- XQuery 實例
- XQuery FLWOR 表達式
- XQuery FLWOR + HTML
- XQuery 術語
- XQuery 語法
- XQuery 添加元素 和屬性
- XQuery 選擇 和 過濾
- XQuery 函數
- XQuery 參考手冊
- XLink 和 XPointer 教程
- XLink 和 XPointer 簡介
- XLink 和 XPointer 語法
- XLink 實例
- XPointer 實例
- XLink 參考手冊
- XML Schema 教程
- XML Schema 簡介
- 為什么使用 XML Schemas?
- XSD 如何使用?
- XSD - <schema> 元素
- XSD 簡易元素
- XSD 屬性
- XSD 限定 / Facets
- XSD 復合元素
- XSD 空元素
- XSD 僅含元素
- XSD 僅含文本
- XSD 混合內容
- XSD 指示器
- XSD <any> 元素
- XSD <anyAttribute> 元素
- XSD 元素替換(Element Substitution)
- XSD 實例
- XSD 字符串 數據類型
- XSD 日期和時間數據類型
- XSD 數值數據類型
- XSD 雜項 數據類型
- XML 編輯器
- XML Schema 參考手冊
- XSD 元素
- XSD 限定/Facets
- SOAP 教程
- SOAP 簡介
- SOAP 語法
- SOAP Envelope 元素
- SOAP Header 元素
- SOAP Body 元素
- SOAP Fault 元素
- SOAP HTTP 協議
- SOAP 實例
- WSDL 教程
- WSDL 簡介
- WSDL 文檔
- WSDL 端口
- WSDL 綁定
- WSDL UDDI
- RSS 教程
- RSS 簡介
- RSS 歷史
- RSS 語法
- RSS <channel> 元素
- RSS <item> 元素
- RSS 發布您的 Feed
- RSS 閱讀器
- RSS 參考手冊
- RDF 教程
- RDF 簡介
- RDF 規則
- RDF 實例
- RDF 主要 元素
- RDF 容器 Elements
- RDF 集合
- RDF Schema (RDFS)
- RDF 都柏林核心元數據倡議
- OWL 簡介
- RDF 參考手冊
- XSL-FO 教程
- XSL-FO 簡介
- XSL-FO 文檔
- XSL-FO 區域
- XSL-FO 輸出
- XSL-FO 流
- XSL-FO 頁面
- XSL-FO 塊
- XSL-FO 列表
- XSL-FO 表格
- XSL-FO 與 XSLT
- XSL-FO 軟件
- XSL-FO 參考手冊
- SVG 教程
- SVG 簡介
- SVG 實例
- SVG 在 HTML 頁面
- SVG <rect>
- SVG <circle>
- SVG <ellipse>
- SVG <line>
- SVG <polygon>
- SVG <polyline>
- SVG <path>
- SVG <text>
- SVG Stroke 屬性
- SVG 濾鏡
- SVG 模糊效果
- SVG 陰影
- SVG 漸變 - 線性
- SVG 漸變- 放射性
- SVG 參考手冊
- 免責聲明