2010-04-01 30 views
25

Tôi đã triển khai để tạo tệp XML bên dưới với XmlTextWriter khi khởi tạo ứng dụng.Cách sửa đổi tệp XML hiện có bằng XmlDocument và XmlNode trong C#

Và biết tôi không biết làm thế nào để cập nhật giá trị id childNode với XmlDocument & XmlNode.

Có một số thuộc tính để cập nhật giá trị id không? Tôi đã thử Nội dung nhưng không thành công. cảm ơn bạn.

<?xml version="1.0" encoding="UTF-8"?> 
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <License licenseId="" licensePath=""/> 
    <DataCollections> 
    <GroupAIDs> 
     <AID id="100"> 
     <Variable id="200"/> 
     <Variable id="201"/> 
     </AID> 
     <AID id=""> 
     <Variable id="205"/> 
     </AID> 
     <AID id="102"/> 
    </GroupAIDs> 
    <GroupBIDs> 
     <BID id="2000"> 
     <AID id="100"/> 
     </BID> 
     <BID id="2001"> 
     <AID id="101"/> 
     <AID id="102"/> 
     </BID> 
    </GroupBIDs> 
    <GroupCIDs> 
     <BID id="8"/> 
     <BID id="9"/> 
     <BID id="10"/> 
    </GroupCIDs> 
    </DataCollections> 
</Equipment> 
+0

soi mói: các nên có một thẻ đóng - không phải là một - rằng sẽ không làm việc, điều này XML không hợp lệ là –

+0

Đã sửa. Cảm ơn bạn. –

+0

[Đọc và Viết XML bằng cách sử dụng C#] (http://www.java2s.com/Code/CSharp/XML/XML-Write.htm) Tại sao không thử và đến đây với một câu hỏi cụ thể? cũng cho chúng ta thấy những gì bạn đã làm cho đến nay. – Shoban

Trả lời

50

Bạn cần phải làm một cái gì đó như thế này:

// instantiate XmlDocument and load XML from file 
XmlDocument doc = new XmlDocument(); 
doc.Load(@"D:\test.xml"); 

// get a list of nodes - in this case, I'm selecting all <AID> nodes under 
// the <GroupAIDs> node - change to suit your needs 
XmlNodeList aNodes = doc.SelectNodes("/Equipment/DataCollections/GroupAIDs/AID"); 

// loop through all AID nodes 
foreach (XmlNode aNode in aNodes) 
{ 
    // grab the "id" attribute 
    XmlAttribute idAttribute = aNode.Attributes["id"]; 

    // check if that attribute even exists... 
    if (idAttribute != null) 
    { 
     // if yes - read its current value 
     string currentValue = idAttribute.Value; 

     // here, you can now decide what to do - for demo purposes, 
     // I just set the ID value to a fixed value if it was empty before 
     if (string.IsNullOrEmpty(currentValue)) 
     { 
     idAttribute.Value = "515"; 
     } 
    } 
} 

// save the XmlDocument back to disk 
doc.Save(@"D:\test2.xml"); 
+0

Nó hoạt động tốt! Cảm ơn bạn rất nhiều. –

+1

giải pháp rất đơn giản và tối ưu. cảm ơn bạn. – Nani

+1

Có thể lưu thay đổi trong cùng một tệp xml "D: \ test.xml" không? –

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