2009-08-22 41 views
7

Tôi đang viết một số mã để tạo một tệp opml từ danh sách nguồn cấp dữ liệu rss (được phân tích cú pháp) trên trang web của tôi. Người dùng sẽ chọn hộp kiểm từ dữ liệu thống kê của nguồn cấp dữ liệu rss trên trang web của tôi và khi nhấn nút, việc nâng hạng nặng sẽ xảy ra.Sử dụng xname trong LINQ-to-xml

Dù sao, tôi có mã như thế này:

 foreach (var v in list) 
    { 
     XName xname; 

     doc.Element("channel").Add(
      new XElement("title", v.Name), 
      new XElement("description", "First Article Description"), 
      new XElement("pubDate", DateTime.Now.ToUniversalTime()), 
      new XElement("guid", Guid.NewGuid())); 

    } 

danh sách là một tập hợp các đối tượng thức ăn chăn nuôi (ví dụ Hanselman rss feed, feed rss codinghorror, vv). DataGrid sẽ có một hộp kiểm và nhấn nút bên dưới lưới này, đoạn mã trên sẽ thực hiện (tôi cũng đã nhận được mã cho các khai báo xml, vv).

Khi tôi sử dụng phương thức Element (...), tôi cần cung cấp XName. Điều này có một constructor nội bộ mà tôi không thể sử dụng. Làm thế nào tôi có thể vượt qua tham số này?

Trả lời

11

Có một phương pháp tĩnh trên XName được gọi là Nhận cho phép bạn tạo một XName. Tuy nhiên, đó cũng là một diễn viên tiềm ẩn từ chuỗi XName, vì vậy nếu bạn chỉ cần nhập một chuỗi, nó sẽ có thể conver để XName và làm việc mà không vấn đề

2

Tạo một đối tượng XNamespace và sử dụng các nhà điều hành bổ sung:

XName name = (XNamespace)"http://schemas.xyz.com/namespaceUri" + "tagName"; 
15

Bạn cũng có thể kèm theo một không gian tên trong dấu ngoặc nhọn:

XName name = "{http://schemas.xyz.com/namespaceUri}tagName";