2009-07-02 12 views
8

Sử dụng các lớp .NET System.ServiceModel.Syndication ...Làm thế nào để Thêm Một SyndicationElementExtension Để Một SyndicationItem

Tôi muốn thêm một SyndicationElementExtension mới cho một SyndicationItem sẽ xuất XML sau:

<media:thumbnail url="http://www.foo.com/keyframe.jpg" width="75" height="50" time="12:05:01.123" /> 

cái gì đó dọc theo dòng:

syndicationItem.ElementExtensions.Add(new SyndicationElementExtension("thumbnail", "http://video.search.yahoo.com/mrss", ? 

làm thế nào để bạn tạo một SyndicationElementExtension đơn giản với một vài thuộc tính?

Trả lời

10

Tìm thấy câu trả lời ở đây: http://msdn.microsoft.com/en-us/library/bb943475.aspx

Các SyndicationElementExtensionCollection lớp cũng có thể được sử dụng để tạo mở rộng phần tử từ một XmlReader dụ. Điều này cho phép dễ dàng tích hợp với các API xử lý XML chẳng hạn như XElement như được hiển thị trong mã mẫu sau .

feed.ElementExtensions.Add(new XElement("xElementExtension", 
     new XElement("Key", new XAttribute("attr1", "someValue"), "Z"), 
     new XElement("Value", new XAttribute("attr1", "someValue"), 
     "15")).CreateReader()); 
11

Chỉ cần đơn giản hóa cho các chàng bên cạnh người đến cùng cố gắng để con số này ra, đây là một ví dụ làm việc thêm một hình ảnh thu nhỏ mục cơ bản (RSS 2.0 bao vây trong trường hợp này) dọc theo dòng của tài liệu:

SyndicationItem item = new SyndicationItem(); 

// populate item... 

item.ElementExtensions.Add(
    new XElement("enclosure", 
     new XAttribute("type", "image/jpeg"), 
     new XAttribute("url", "http://path.to/my/image.jpg") 
    ).CreateReader() 
); 

Bạn cũng có thể đổ các thuộc tính và chỉ đặt nội dung văn bản sau tên thẻ nếu bạn muốn một thẻ đơn giản, tức là <comments>http://my.comments/feed</comments>.

+0

làm thế nào để bạn đổ các thuộc tính? Nếu tôi không vượt qua bất kỳ và cũng không vượt qua không gian tên cho một phần tử, nó chèn thuộc tính xmlns = "" anyways. – Hallaghan

+0

Hmm, tôi không thấy điều đó xảy ra ở phần cuối của tôi, thuộc tính 'xmlns =" ​​"' chỉ được chỉ định ở phần tử bên ngoài ''. Bạn có thể đăng một ví dụ? – nickb