170
Chương 5: XML
trùng khớp). Để sử dụng phương thức này, trước hết lấy một
XmlNode
tương ứng với một phần
tử, kế đó ép đối tượng này thành một
XmlElement
. Ví dụ dưới đây trình bày cách tìm nút
price
bên dưới phần tử
product
đầu tiên:
// Thu lấy tham chiếu đến product đầu tiên.
XmlNode product = doc.GetElementsByTagName("products")[0];
// Tìm nút price bên dưới product này.
XmlNode price =
((XmlElement)product).GetElementsByTagName("productPrice")[0];
Console.WriteLine("Price is " + price.InnerText);
Nếu các phần tử của bạn có chứa đặc tính
ID
, bạn cũng có thể sử dụng một phương thức có tên
là
GetElementById
để thu lấy phần tử có giá trị
ID
trùng khớp.
5.
5.
Thu l y các nút XML trong m t không gian tên XML c th
ấ
ộ
ụ ể
Thu l y các nút XML trong m t không gian tên XML c th
ấ
ộ
ụ ể
Bạn cần thu lấy các nút trong một không gian tên cụ thể bằng một
XmlDocument
.
Sử dụng phiên bản nạp chồng của phương thức
XmlDocument.
GetElementsByTagName
(yêu cầu một tên không gian tên làm đối số). Ngoài ra, áp
dụng dấu hoa thị (
*
) vào đối số tên thẻ nếu bạn muốn so trùng tất cả các thẻ.
Nhiều tài liệu XML chứa các nút thuộc nhiều không gian tên khác nhau. Ví dụ, tài liệu XML
mô tả một bài báo khoa học có thể sử dụng một kiểu đánh dấu riêng để biểu thị các phương
trình toán học và các biểu đồ vector. Hoặc một tài liệu XML với các thông tin về đặt hàng có
thể kết hợp các thông tin về khách hàng và đơn đặt hàng cùng với một hồ sơ vận chuyển.
Tương tự, một tài liệu XML mô tả một giao dịch thương mại có thể bao gồm những phần
thuộc cả hai công ty, và những phần này được viết theo ngôn ngữ đánh dấu riêng.
Một tác vụ thông thường trong lập trình XML là thu lấy các phần tử thuộc một không gian tên
cụ thể. Bạn có thể thực hiện tác vụ này với phiên bản nạp chồng của phương thức
XmlDocument.GetElementsByTagName
(yêu cầu một tên không gian tên làm đối số). Bạn có thể
sử dụng phương thức này để tìm các thẻ theo tên, hoặc tìm tất cả các thẻ trong không gian tên
đã được chỉ định nếu bạn áp dụng dấu hoa thị vào đối số tên thẻ.
Ví dụ, tài liệu XML phức hợp dưới đây bao gồm các thông tin về đơn đặt hàng và khách hàng
trong hai không gian tên khác nhau là
http://mycompany/OrderML
và
http://mycompany/ClientML
.
<?xml version="1.0" ?>
<ord:order xmlns:ord="http://mycompany/OrderML"
xmlns:cli="http://mycompany/ClientML">
<cli:client>