Tôi sử dụng công nghệ XML XML khá rộng rãi trong công việc của mình. Một trong những điều tôi thích nhất là động cơ XSLT, chính xác hơn khả năng mở rộng của nó. Tuy nhiên có một mảnh nhỏ mà giữ được một nguồn gây phiền nhiễu. Không có gì lớn hoặc một cái gì đó chúng ta không thể sống với nhưng nó ngăn cản chúng ta tạo ra XML đẹp mà chúng ta muốn sản xuất.Quản lý không gian tên thích hợp trong .NET XmlWriter
Một trong những điều chúng tôi làm là chuyển đổi các nút nội tuyến và nhập các nút từ một tài liệu XML sang một tài liệu XML khác.
Đáng buồn thay, khi bạn lưu các nút vào một số XmlTextWriter
(thực tế là bất kỳ giá trị nào XmlWriter.Create(Stream)
trả về), các định nghĩa không gian tên đều được ném vào đó, bất kể nó là cần thiết (đã được xác định trước) hay không. Bạn nhận được loại xml sau đây:
<root xmlns:abx="http://bladibla">
<abx:child id="A">
<grandchild id="B">
<abx:grandgrandchild xmlns:abx="http://bladibla" />
</grandchild>
</abx:child>
</root>
Có ai có đề xuất cách thuyết phục .NET có hiệu quả về định nghĩa không gian tên của nó không?
Xin cảm ơn, Boaz
PS. Là một phần thưởng thêm, tôi muốn ghi đè lên không gian tên mặc định, thay đổi nó khi tôi viết một nút.
'XmlTextReader' và' XmlTextWriter' được về cơ bản khấu hao, và không thể được sử dụng trực tiếp nếu bạn đang làm việc với các 'phương pháp Create' khuyến khích. Dù sao thì, đây là lúc tôi thêm tiền thưởng, vì vậy tôi hy vọng nó không đủ điều kiện. Nó không trả lời câu hỏi, được viết hoàn toàn như vậy, * viz *, "cách thuyết phục .NET để có hiệu quả về các định nghĩa không gian tên của nó." Tôi cho rằng điều đó chỉ có thể thực hiện được thông qua một người đọc hoặc người viết tùy chỉnh, nhưng đó là một hack nếu có một giải pháp riêng. – harpo