2012-01-21 15 views
9

Tôi đang đọc trong một tệp XML trong AS3. Tôi cần tìm hiểu xem một thuộc tính có tồn tại trên một nút hay không. Tôi muốn làm một cái gì đó như:Làm cách nào để kiểm tra xem một thuộc tính đã được đặt trong nút XML hay chưa bằng cách sử dụng AS3

if(xmlIn.attribute("id")){ 
foo(xmlIn.attribute("id"); // xmlIn is of type XML 
} 

Điều này không hoạt động. Câu lệnh if ở trên luôn đúng, ngay cả khi thuộc tính id không nằm trên nút.

Trả lời

18

Bạn phải làm điều này thay vì:

if(xmlIn.hasOwnProperty("@id")){ 
    foo(xmlIn.attribute("id"); // xmlIn is of type XML 
} 

Trong XML E4X phân tích cú pháp, bạn phải sử dụng hasOwnProperty để kiểm tra xem một tài sản cho các thuộc tính như được thiết lập trên nút đối tượng XML E4X. Hi vọng điêu nay co ich!

+0

Cảm ơn bạn, tôi nghĩ rằng giải pháp của tôi đã bị hacky. Phương thức hasOwnProperty đã thực hiện thủ thuật. – Boundless

+0

Làm cách nào để kiểm tra xem nó có trống không? – Livi17

0

Tôi đã tìm ra điều này. Đối với bất kỳ ai có cùng vấn đề, có vẻ như kiểm tra độ dài của thuộc tính lớn hơn 0 công trình.

if(xmlIn.attribute("id").length() >0){ 
foo(xmlIn.attribute("id"); // xmlIn is of type XML 
} 

Tôi không biết điều này có hiệu quả trong mọi trường hợp không, nhưng nó có hiệu quả với tôi hay không. Nếu có một cách tốt hơn để làm điều này, xin vui lòng gửi nó.

+0

Hey Vô biên, hãy xem câu trả lời khác của tôi. Sử dụng hasOwnProperty hiệu quả hơn nhiều so với việc tạo một mảng thuộc tính và sau đó đếm chỉ mục mảng để chỉ xác định xem nó có tồn tại hay không. Tuy nhiên, nếu hiệu suất không phải là một vấn đề, điều này chắc chắn sẽ làm việc quá. –

+0

@JonathanDunlap Cảm ơn, hiệu suất là một vấn đề (nhưng tôi vẫn sử dụng Flash, thật đáng tiếc). Giải pháp trên của bạn với hasOwnProperty hoạt động tốt, cảm ơn. – Boundless

3

Cách đơn giản nhất:

(@id in xmlIn) 

này sẽ trả về true nếu id attrtibute tồn tại và sai khác.

+2

Toán tử 'trong' chuỗi cần, bạn phải viết '('@id' trong xmlIn)' – marbel82

5

tôi tìm thấy 4 cách:

if ('@id' in xmlIn) 
if (xmlIn.hasOwnProperty("@id")) 
if ([email protected]() > 0) 
if (xmlIn.attribute("id").length() > 0) 

và tôi prefere phương pháp đầu tiên:

if ('@id' in xmlIn) 
{ 
    foo([email protected]); 
} 
1

Tôi thường sử dụng:

if ([email protected] != undefined) 

Nó cũng làm việc cho các thuộc tính đối tượng:

if (obj.id != undefined) 
Các vấn đề liên quan