1 xmlDoc.getElementsByTagName - Nhiều tên thẻ giống nhau, chỉ nhận được một từ cha mẹ nhất định?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi đang cố phân tích tệp XML khác nhau cho một số thông tin nhất định, nhưng trong tệp có nhiều bội số của cùng một tên thẻ, nhưng số lượng chúng có thể thay đổi theo tệp trên cơ sở tệp, có nghĩa là tôi không thể thêm những gì đó là thẻ số, tôi muốn căn cứ vào thẻ phụ của nó, vì vậy chỉ có thẻ cha /thẻ nhất định sẽ được phân tích cú pháp.


var request = new XMLHttpRequest();
request.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
request.open("GET", "test.xml", true)
request.send();
function myFunction(xml) {
   var xmlDoc = xml.responseXML;
   var test = xmlDoc.getElementsByTagName("SerialNumber")[0].childNodes[0].nodeValue;
};

Tôi đã đọc về Xpath nhưng dường như không thể làm cho nó hoạt động trong mã của tôi.

Ví dụ là có nhiều thẻ SerialNumber, nhưng tôi muốn kiểm tra chỉ trở thành giá trị nút serialNumber nằm dưới "Storage" gốc.

    
0
1 Câu trả lời                              1                         

Hãy thử một cái gì đó như thế này cho myFunction:

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var resultset = xmlDoc.evaluate('//Storage/SerialNumber', xmlDoc);
    var nodes = [];
    var node;

    while (node !== null) {
        node = resultset.iterateNext();
        nodes.push(node);
    }

    // Do what you need to here.
    console.log(nodes);
    // For example, to get the first result's text contents:
    console.log(nodes[0].textContent);
};

Điều đó sử dụng truy vấn XPath để tìm tất cả các phần tử SerialNumber là con của Storage trong tài liệu XML đã truy xuất.

Nếu bạn có một thông số cho biết sẽ chỉ có một kết hợp Storage > SerialNumber trong tài liệu, thì đáng để kiểm tra độ dài của mảng kết quả và đưa ra lỗi khi không phải là một.

    
0
2019-05-09 11: 19: 41Z
  1. Có thể có nhiều hơn một kết hợp cha mẹ /con nối tiếp, nhưng khi tôi chạy mã đó, nó sẽ ghi nhật ký "[Element Element],"
    2019-05-08 16: 49: 45Z
  2. Đó là những gì tôi mong đợi nếu chỉ có một trong tài liệu. Bạn sẽ có thể nhận được bất cứ điều gì bạn muốn từ các đối tượng phần tử trong mảng. Tôi có thiếu thứ gì không?
    2019-05-08 18: 10: 49Z
  3. Xin lỗi tôi vẫn còn khá mới ở đây, vì vậy nếu tôi thiếu một cái gì đó rõ ràng tôi xin lỗi. Các nút mảng chỉ có một thứ vì nó chỉ có một tài liệu, nhưng giá trị là [Phần tử đối tượng], không phải là gì dưới thẻ SerialNumber trong Tệp XML, tôi thấy nó đang tìm đúng đối tượng, nhưng không phải là giá trị chính xác?
    2019-05-08 18: 18: 35Z
  4. À, tôi hiểu rồi. Tôi đã cập nhật ví dụ về cách lấy nội dung văn bản thực tế của thẻ. Tôi xin lỗi vì đã không đọc kỹ câu hỏi của bạn.
    2019-05-08 18: 20: 35Z
  5. Điều đó đã hoạt động, cảm ơn rất nhiều!
    2019-05-08 18: 23: 54Z
nguồn đặt đây