2010-11-17 202 views
0

alt text我想編輯XML文件

我已經修改d XML文件的結構。我想編輯可見的值

+1

你需要擴大與示例XML(前和變更後)這個問題得到一個體面的答案 – 2010-11-17 19:44:16

+2

示例XML提供無效。標籤c和d沒有右大括號。 – 2010-11-17 19:49:45

+0

@Scott - 也不是第二個'b' – KevinDTimm 2010-11-17 19:52:37

回答

1

可以使用這樣的代碼模式:

bool foobar() 
    { 
     XmlDocument doc = new XmlDocument(); 
     try 
     { 
      doc.Load(FileName); 
      XmlNodeList ns = doc.SelectNodes("a/d/e/f"); 
      if (ns.Count == 1) 
      { 

        ns[0].Attributes["visible"].Value = true; 
        doc.Save(FileName); 
        return (true); 
      } 
      else 
       return (false); 
     } 
     catch (Exception e) 
     { 
      return (false); 
     } 
    } 
+0

使用true/false代替異常是一種高度非慣用(有損)的指示.NET成功或失敗的方式。例外是有原因的 - 使用它們! – 2010-11-18 10:23:59

+0

你的意思是我應該將異常填充到父代碼中?在這種情況下的表現如何? – texnedo 2010-11-19 08:05:50

6

那麼,LINQ to XML使得處理XML文檔變得非常容易,假設它們足夠小以便合理地加載到內存中。

例如:

var doc = XDocument.Load("Foo.xml"); 
foreach (var element in doc.Descendants("c")) 
{ 
    element.SetAttributeValue("value", "bb"); 
} 
doc.Save("Bar.xml"); 

現在將設置c元素value屬性。目前尚不清楚這是否是你想要的。如果不是,請編輯您的問題以使其更具體。

+0

聖逍遙,蝙蝠俠! +1 – karlgrz 2010-11-17 20:02:49

+0

實際上,它的工作(「SetAttribute」不存在),使用該代碼:element.SetAttributeValue(「value」,「bb」); – SwissCoder 2010-11-23 15:03:05

+0

@SwissCoder:是的,是固定的。 – 2010-11-23 15:04:04