簡體   English   中英

如何覆蓋xml文件中的節點?

[英]How to overwrite nodes in an xml file?

我有以下XML文件:

<WindowEntries>
<WindowEntry>
  <Name>maduranga</Name>
  <View>TRN_UNIT</View>
  <LU>TrnUnit</LU>
  <DefaultWindowText />
  <Flags>0</Flags>
</WindowEntry>
<WindowEntry>
  <Name>tbwBrandOverView</Name>
  <View>TRN_BRAND</View>
  <LU>TrnBrand</LU>
  <DefaultWindowText />
  <Flags>0</Flags>
</WindowEntry>
<WindowEntries>

我為該xml開發了TreeView。 用戶從樹形視圖中選擇一個WindowEntry進行編輯后,以及用戶在條目中選擇一個條目值后,加載一些文本框進行編輯。 用戶完成編輯后,我將其保存。 保存后,xml文件如下所示:

<WindowEntries>
 <WindowEntry>
 <Name>maduranga</Name>
 <View>maduranga</View>
 <LU>maduranga</LU>
 <Flags>maduranga</Flags>
</WindowEntry>
<WindowEntry>
 <Name>tbwBrandOverView</Name>
 <View>TRN_BRAND</View>
 <LU>TrnBrand</LU>
 <Flags>0</Flags>
</WindowEntry>
**<WindowEntry>
 <Name>newvalue</Name>
 <View>newvalue</View>
 <LU>newvalue</LU>
 <Flags>newvalue</Flags>
</WindowEntry>**
<WindowEntries>

但我想用“ newvalue”覆蓋“ madurang”值。 這是我用於該編輯的代碼。

     XmlTextReader reader = new XmlTextReader("component.xml");
            XmlDocument doc = new XmlDocument();
            doc.Load(reader);
            reader.Close();
            XmlNode currNode;
            XmlDocumentFragment docFrag = doc.CreateDocumentFragment();
            try
            {
                string path3 = treeView1.SelectedNode.FullPath.ToString();
                docFrag.InnerXml = "<WindowEntry>" +
                            "<Name>" + textBox7.Text + "</Name>" +
                            "<LU>" + textBox8.Text + "</LU>" +
                            "<View>" + textBox9.Text + "</View>" +
                            "<Flags>" + textBox10.Text + "</Flags>" +

                            "<OverrideDefaultHome>" + textBox11.Text + "</OverrideDefaultHome>" +
                            "<AssociatedHomepage>" + textBox12.Text + "</AssociatedHomepage>" +
                            "</WindowEntry>";

                        currNode = doc.SelectSingleNode("Component/WindowEntries");


                        currNode.AppendChild(docFrag);

                        doc.Save("component.xml");
                       }

Linq-XML簡單而強大。

  filename = @"c:\path\sample.xml";

  XDocument doc = XDocument.Load(filename);

  var result = (from node in doc.Descendants("WindowEntry")
                         where node.Element("Name").Value == "maduranga"
                         select  node.Element("Name")).ToList();

  if(result.Count!=0)
    result[0].Value = "NewValue";

  doc.Save(filename);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM