này loại bỏ tất cả các yếu tố từ tài liệu:nút Loại bỏ từ XDocument
XDocument document = XDocument.Load(inputFile);
foreach (XElement element in document.Elements())
{
element.Remove();
}
document.Save(outputFile);
này không có bất kỳ tác:
XDocument document = XDocument.Load(inputFile);
foreach (XElement element in document.Elements())
{
//element.Remove();
foreach (XElement child in element.Elements())
child.Remove();
}
document.Save(outputFile);
Tôi có thiếu cái gì ở đây? Vì đây là tất cả các tham chiếu đến các phần tử trong XDocument, nên các thay đổi có hiệu lực không? Có cách nào khác tôi nên được loại bỏ trẻ em lồng nhau từ một XDocument?
Cảm ơn!
Bạn đã sửa lỗi mã? Bạn có chắc chắn rằng element.Elements() trả về các phần tử con không? Chỉ cần tìm kiếm thêm một chút thông tin về chính xác những gì bạn đang thấy xảy ra. – jrista
@jrista Nó trả về các phần tử con, nhưng vấn đề có vẻ là với điều tra viên khác nhau sau một '.Remove()'. – Jake
Vâng, đó là những gì tôi mong đợi. Các điều tra viên thường ném ngoại lệ khi bạn sửa đổi bộ sưu tập, vì chúng rất phụ thuộc vào sự ổn định của bộ sưu tập cơ bản để hoạt động đúng. Tôi thực sự ngạc nhiên bạn có thể tiếp tục sau khi loại bỏ một nút trong khi sử dụng một foreach/enumerator. Tôi thường khuyên bạn nên sử dụng một vòng lặp while (hoặc có thể cho ... nhưng thats phức tạp hơn), chứ không phải là một foreach. – jrista