2012-02-07 33 views
8

Trước hết là C#. Tôi đang tạo một bảng điều khiển internet cho một nhóm nhỏ các đồng nghiệp trong NHS. Dưới đây là một tệp ví dụ xml mà tôi cần phải thay đổi nội dung trong đó. Tôi cần phải thay thế một phần tử cụ thể, ví dụ như "Workshop1". Bởi vì chúng tôi có một vài cuộc hội thảo, tôi không thể đủ khả năng để sử dụng một nhà văn nói chung bởi vì nó sẽ thay thế tất cả các thông tin trên tài liệu XML bằng một chút mã dưới đây.Thay thế innertext của một nút/phần tử Xml

<?xml version="1.0" ?> 
    <buttons> 
     <workshop1>hello</workshop1> 
     <url1>www.google.co.uk</url1> 

Tôi đang sử dụng một trường hợp chuyển sang chọn một hội thảo cụ thể mà bạn có thể thay đổi tên và thêm một địa chỉ URL của hội thảo và sử dụng mã này dưới đây sẽ thay thế toàn bộ tài liệu.

public void XMLW() 
    { 
     XmlTextReader reader = new XmlTextReader("C:\\myXmFile.xml"); 
     XmlDocument doc = new XmlDocument(); 

     switch (comboBox1.Text) 

     { 
      case "button1": 


       doc.Load(reader); //Assuming reader is your XmlReader 
       doc.SelectSingleNode("buttons/workshop1").InnerText = textBox1.Text; 
       reader.Close(); 
       doc.Save(@"C:\myXmFile.xml"); 
       break; 


     } 


    } 

Vì vậy, chỉ cần làm rõ tôi muốn chương trình C# của tôi tìm kiếm qua tài liệu XML tìm phần tử "Workshop1" và thay thế innertext bằng văn bản từ hộp văn bản. và có thể lưu nó mà không thay thế toàn bộ tài liệu bằng một nút. Cảm ơn bạn đã tìm kiếm.

+2

Có lý do nào khiến bạn không sử dụng 'XDocument' hoặc ít nhất là API' XmlDocument' không? Bạn thường chỉ sử dụng 'XmlReader' /' XmlWriter' nếu bạn phải xử lý các tệp * lớn * XML. –

+0

Vâng tôi là một chút của một newbie trong C#. Vì vậy, để có được chương trình chung chạy tôi bashing mã với nhau và sau đó khi tôi có thể nhìn thấy nó làm việc tôi có thể thay đổi mã để làm cho nó hiệu quả hơn. Atleast theo cách này tôi có thể tìm hiểu sự khác biệt giữa những cách xấu xí và sạch sẽ của việc làm và hiểu được những lợi thế của cả hai. Tuy nhiên cảm ơn bạn đã hướng dẫn của bạn, tôi sẽ xem xét để sử dụng XMLReader/XMLWriter bây giờ. – Marshal

+0

Lời khuyên của tôi là KHÔNG sử dụng 'XmlReader' /' XmlWriter' ... –

Trả lời

10

Sử dụng XmlDocument và XPath bạn có thể làm điều này

XmlDocument doc = new XmlDocument(); 
doc.Load(reader); //Assuming reader is your XmlReader 
doc.SelectSingleNode("buttons/workshop1").InnerText = "new text"; 

Bạn có thể sử dụng doc.Save để lưu các tập tin cũng có.

Đọc thêm về XmlDocument trên MSDN.

EDIT

Để lưu tài liệu làm việc này

doc.Save(@"C:\myXmFile.xml"); //This will save the changes to the file. 

Hy vọng điều này sẽ giúp bạn.

+0

Tôi nghĩ nó hoạt động. Vấn đề duy nhất bây giờ là nó sẽ không cho phép tôi lưu tài liệu. Tôi đang sử dụng "doc.Save;" Tuy nhiên nó xuất hiện với một lỗi ** "Chỉ gán, gọi, tăng, giảm, và biểu thức đối tượng mới có thể được sử dụng như một câu lệnh." ** Đây có phải là vì tôi không sử dụng XMLWriter không? hoặc là? Tôi đã làm việc trên một chương trình này từ rất lâu, có lẽ tôi là một thằng ngốc. Nếu bạn nhìn ở trên, bạn có thể thấy nó bị nén. – Marshal

+0

Vui lòng kiểm tra câu trả lời cập nhật của tôi. –

+0

Đã chỉnh sửa mã ở trên để hiển thị mã đang hoạt động và cho người dùng trong tương lai làm tài liệu tham khảo. Cảm ơn Amar Palsapure. – Marshal

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