C# 如何覆盖xml文件中的节点?
我有以下XML文件:C# 如何覆盖xml文件中的节点?,c#,.net,xml,xmltextreader,C#,.net,Xml,Xmltextreader,我有以下XML文件: <WindowEntries> <WindowEntry> <Name>maduranga</Name> <View>TRN_UNIT</View> <LU>TrnUnit</LU> <DefaultWindowText /> <Flags>0</Flags> </WindowEntry> <WindowE
<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>
马杜兰加
TRN_装置
特努尼特
0
TBWBrand概述
TRN_品牌
特恩布兰德
0
我为xml开发了一个树状视图。用户从树状视图中选择一个WindowEntry进行编辑后,以及用户在entry中选择一个entry值后,加载一些文本框进行编辑。用户完成编辑后,我保存它。保存后,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>
马杜兰加
马杜兰加
马杜兰加
马杜兰加
TBWBrand概述
TRN_品牌
特恩布兰德
0
**
新价值
新价值
新价值
新价值
**
但我想用“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");
}
XmlTextReader=newxmltextreader(“component.xml”);
XmlDocument doc=新的XmlDocument();
文件加载(读卡器);
reader.Close();
XmlNode-currNode;
XmlDocumentFragment docFrag=doc.CreateDocumentFragment();
尝试
{
string path3=treeView1.SelectedNode.FullPath.ToString();
docFrag.InnerXml=“”+
“”+textBox7.Text+“”+
“”+textBox8.Text+“”+
“”+textBox9.Text+“”+
“”+textBox10.Text+“”+
“”+textBox11.Text+“”+
“”+textBox12.Text+“”+
"";
currNode=doc.SelectSingleNode(“组件/窗口条目”);
currenode.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);
会好的。但是,名称、视图和lu值完全不同。