6

Tôi đã có một phần tùy chỉnh trong tập tin web.config của tôi tương tự như cấu trúc này:Chuyển đổi cấu hình XDT - Thay thế tất cả?

<Messages> 
    <Message id="1'> 
    <Property Name="foo" value="bar" /> 
    </Message> 
    <Message id="2'> 
    <Property Name="foo" value="bar2" /> 
    </Message> 
</Messages> 

Tôi muốn áp dụng một chuyển đổi tùy chỉnh về vấn đề này như vậy mà tôi có thể thay đổi giá trị của tất cả các trường hợp của các yếu tố tài sản với Name = "foo" - nhưng tôi không thể làm cho nó hoạt động được.

Tôi đã thử:

<Messages> 
    <Message> 
    <Property Name="foo" value="updated" xdt:Locator=Match(Name) xdt:Transform="Replace" /> 
    </Message> 
</Mesasges> 

tôi có thể loại bỏ tất cả các yếu tố bằng cách thay thế Transform = Replace with một Transform RemoveAll - bất kỳ ý tưởng làm thế nào tôi có thể đạt được một cái gì đó tương tự để thay thế tất cả các giá trị?

+0

Có thể cho chúng tôi biết bạn đã thử gì? –

+0

Xin lỗi, định dạng XMl đã cho tôi lần đầu tiên. Cập nhật bây giờ –

Trả lời

7

Có vẻ như Chuyển đổi: Thay thế chỉ thay thế phần tử được so khớp đầu tiên từ documentation on msdn: ... Nếu chọn nhiều phần tử, chỉ thay thế phần tử được chọn đầu tiên. Tôi đã giải quyết vấn đề này bằng cách sử dụng kết hợp Điều kiện đối sánh và Thuộc tính SetAttributes, như sau:

<Messages> 
    <Message> 
    <Property value="updated" xdt:Locator=Condition(@Name='foo') xdt:Transform="SetAttributes(value)" /> 
    </Message> 
</Messages> 
+0

để làm rõ thêm, từ tài liệu: _... Biến đổi SetAttributes ảnh hưởng đến ** tất cả ** các phần tử được chọn. Điều này khác với thuộc tính Thay đổi thay thế, chỉ ảnh hưởng ** ** thành phần tử được chọn đầu tiên nếu nhiều phần tử được chọn_. –

+0

Điều quan trọng cần lưu ý là XPath không đủ để làm việc này. Cấu trúc của XML trong chuyển đổi * phải * phản ánh cấu trúc của XML đang được chuyển đổi, vì vậy nếu nút 'Property' được đặt làm gốc của phép biến đổi, nó sẽ không hoạt động. Và, hơn thế nữa, nó chỉ hoạt động với 'SetAttributes',' Replace' sẽ không hoạt động – SOReader

Các vấn đề liên quan