sách gpt4 ai đã đi

Xóa thẻ thanh toán khỏi XML

In lại Tác giả: Data Little Sun Thời gian cập nhật: 2023-10-29 02:55:37 26 4
mua khóa gpt4 Nike

Tôi muốn xóa các lần xuất hiện của một thẻ cụ thể, nhưng vẫn giữ nguyên XML bên trong. Tôi muốn thực hiện tất cả cùng một lúc (thay vì phải tìm kiếm, thay thế và bắt đầu lại từ đầu). Ví dụ, từ nguồn:



Nội dung ở đây



Thêm ở đây

Tôi muốn kết quả như sau:


Nội dung ở đây


Thêm ở đây

Tôi đã thử thế này (xin lỗi, tôi mới dùng Linq):

var elements = từ phần tử trong doc.Descendants()
nơi element.Name.LocalName == "RemovalTarget"
chọn phần tử;

foreach (phần tử var trong các phần tử) {
phần tử.AddAfterSelf(phần tử.Giá trị);
phần tử.Remove();
}

Nhưng tôi nhận được tham chiếu null ở lần lặp thứ hai, có lẽ là do bộ sưu tập không còn hợp lệ do những thay đổi. Cách hiệu quả để xóa những thẻ này trên một tài liệu có dung lượng lớn là gì?

1 Câu trả lời

您必须通过调用 ToList 来跳过延迟执行,这可能不会影响您在大型文档中的性能,因为您将以比原始文件低得多的大 O 进行迭代和替换搜索。正如@jacob_c 指出的那样,我应该使用 element.Nodes() 来正确替换它,并且正如@Panos 指出的那样,我应该反转列表以便准确处理嵌套替换。

此外,使用 XElement.ReplaceWith ,比您当前在大型文档中的方法快得多:

var elements = doc.Descendants("RemovalTarget").ToList().Reverse();
/* reverse on the IList may be faster than Reverse on the IEnumerable,
* needs benchmarking, but can't be any slower
*/

foreach (phần tử var trong các phần tử) {
element.ReplaceWith(element.Nodes());
}

最后一点,在回顾这可能用于什么时,我倾向于同意@Trull 的观点,即 XSLT 可能是您真正要寻找的东西,如果说您要从文档中删除所有 say 标签.否则,请享受这个相当不错且性能相当出色的 LINQ to XML 实现。

关于c# - 从 XML 中去除标 checkout 现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259883/

26 4 0
Bài viết được đề xuất: c# - 将 xml 文档拆分为 block
Bài viết được đề xuất: javascript - AngularJS 中的 View 未更新
Bài viết được đề xuất: javascript - 使用 moment.js 获取当月天数
Bài viết được đề xuất: XML 架构 : Make the value of a multiple occuring tag unique
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com