2008-12-15 44 views

Trả lời

56

Sử dụng LINQ to XML nếu bạn đang sử dụng framework 3.5:

using System.Xml.Linq; 

XDocument xmlFile = XDocument.Load("books.xml"); 

var query = from c in xmlFile.Elements("catalog").Elements("book")  
      select c; 

foreach (XElement book in query) 
{ 
    book.Attribute("attr1").Value = "MyNewValue"; 
} 

xmlFile.Save("books.xml"); 
+1

Đây là một trong những tốt – Graviton

+0

Thực sự tốt một infact! chỉ cần những gì tôi cần, Nếu bạn cần tìm kiếm các thuộc tính sách nhất định chỉ cần thêm .Where (c => (chuỗi) c.Attribute ("myattribute") == "một số giá trị") trước khi chọn c; – VisualBean

+0

Không có điểm bằng văn bản 'từ c trong blah chọn c'. – SLaks

62

Mike; Mỗi lần tôi cần phải sửa đổi một tài liệu XML Tôi làm việc theo cách này:

//Here is the variable with which you assign a new value to the attribute 
string newValue = string.Empty; 
XmlDocument xmlDoc = new XmlDocument(); 

xmlDoc.Load(xmlFile); 

XmlNode node = xmlDoc.SelectSingleNode("Root/Node/Element"); 
node.Attributes[0].Value = newValue; 

xmlDoc.Save(xmlFile); 

//xmlFile is the path of your file to be modified 

Tôi hy vọng bạn tìm thấy nó hữu ích

11

Nếu thuộc tính bạn muốn thay đổi không tồn tại hoặc đã bị vô tình xóa, sau đó một ngoại lệ xảy ra. Tôi đề nghị đầu tiên bạn tạo một thuộc tính mới và gửi nó đến một chức năng như sau:

private void SetAttrSafe(XmlNode node,params XmlAttribute[] attrList) 
    { 
     foreach (var attr in attrList) 
     { 
      if (node.Attributes[attr.Name] != null) 
      { 
       node.Attributes[attr.Name].Value = attr.Value; 
      } 
      else 
      { 
       node.Attributes.Append(attr); 
      } 
     } 
    } 

Cách sử dụng:

XmlAttribute attr = dom.CreateAttribute("name"); 
    attr.Value = value; 
    SetAttrSafe(node, attr); 
+0

Đó là điểm tốt. Không bao giờ giả định rằng thuộc tính đó là có. –

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