Tôi đã sử dụng phương thức $.parseXML()
mới với jQuery 1.5. Bất cứ khi nào tôi chèn một phần tử mới vào đối tượng XML, phần tử mới đó sẽ tự động nhận thuộc tính 'xmlns' với giá trị "http://www.w3.org/1999/xhtml". Ví dụ, xem đoạn mã dưới đây:Làm cách nào để ngăn jQuery chèn các thuộc tính 'xmlns' vào một đối tượng XML?
var myXml = "<one attr='a'><two attr='b'/><three attr='c'><four attr='d'/></three></one>";
myXml = $.parseXML(myXml);
$(myXml).find('three').append($('<five>some value</five>'));
Mã này tạo ra các yếu tố sau:
<five xmlns="http://www.w3.org/1999/xhtml">some value</five>
Làm thế nào để ngăn chặn jQuery từ chèn thuộc tính 'xmlns'? Tôi đã thử sử dụng phương pháp .removeAttr()
, nhưng thậm chí không có vẻ như để làm việc. Bất kỳ ý tưởng?
CẬP NHẬT: Đề xuất mà người dùng nrabinowitz cung cấp là hữu ích trong việc giải quyết vấn đề này. Việc thêm một thuộc tính xlmns vào phần tử mức cao nhất sẽ ngăn không cho thuộc tính xlmns tự động được gán cho mỗi phần tử mới. Tuy nhiên, tôi đã chọn giải pháp khác cho chương trình cụ thể của mình. Thay vào đó, tôi đã sử dụng phương thức .replace()
để loại bỏ tất cả các thuộc tính xlmns sau khi tôi đã chuyển đổi đối tượng XML trở lại thành một chuỗi (được hiển thị trên một trang web).
Bạn đã thử thêm thuộc tính XMLNS của riêng mình vào phần tử gốc chưa? Tôi nghi ngờ rằng trong trường hợp không có một không gian tên rõ ràng, jQuery mặc định là XHTML. – nrabinowitz
Tôi không nghĩ rằng jQuery tự nó thực hiện bất kỳ phân tích cú pháp XML nào cả. Thay vào đó, nó cho phép trình duyệt làm điều đó. (Nếu jQuery có một trình phân tích cú pháp XML hoàn chỉnh được tích hợp sẵn, nó sẽ thậm chí còn lớn hơn :-) * edit * yup đã kiểm tra mã nguồn - nó chỉ đưa XML của bạn cho một cá thể "DOMParser". – Pointy