C#修改xml节点

ayurep 2010-06-11 12:39:59
<?xml version="1.0" encoding="gb2312"?>
<Remote>
<Item>
<ID>0</ID>
<Title>本机</Title>
<Server>.</Server>
<Port>10123</Port>
<UserName>administrator</UserName>
<Password>10123</Password>
<Update>2010-06-01</Update>
</Item>
<Item>
<ID>1</ID>
<Title>385.GoldenET</Title>
<Server>10.6.10.1010</Server>
<Port>23423</Port>
<UserName>gfds</UserName>
<Password>asdf,.</Password>
<Update>2010-06-01</Update>
</Item>
</Remote>


如何要改个Item里面内容怎么写这段代码。

如果是<Item ID="0">这种带有属性的,我知道怎么写,但是没有属性,我就搞不定了
...全文
689 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsmouse 2010-06-11
  • 打赏
  • 举报
回复
做个标识,楼主结贴好低
xk1126 2010-06-11
  • 打赏
  • 举报
回复
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("a.xml");
XmlNodeList nodeList=xmlDoc.SelectSingleNode("").ChildNodes;
foreach(XmlNode xn in nodeList)
{
if (xn.Name=="Item"){
//这样判断就可以遍历了!~
}
}
ayurep 2010-06-11
  • 打赏
  • 举报
回复
这个对的,因为有属性好判断,现在我主要问题就是没有属性,要如何判断第一个ID
ayurep 2010-06-11
  • 打赏
  • 举报
回复
这个对的,因为有属性好判断,现在我主要问题就是没有属性,要如何判断第一个ID

ayurep 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 aiguo0713 的回复:]
其实我觉得你的xml的格式可以变动一下
打个比方:
<configuration>
<add key=“dbtype” value=“xx”/>
<add key=“server” value=“ss”/>
<add key=“database” value=“dd”/>
</configuration>
可以换成这种方式,并且读取时的效率更高
<configura……
[/Quote]

我现在用的就是表签的方式,没用属性的方式
aiguo0713 2010-06-11
  • 打赏
  • 举报
回复
其实我觉得你的xml的格式可以变动一下
打个比方:
<configuration>
<add key=“dbtype” value=“xx”/>
<add key=“server” value=“ss”/>
<add key=“database” value=“dd”/>
</configuration>
可以换成这种方式,并且读取时的效率更高
<configuration>
<dbtype>xx</dbtype>
<server>ss</server>
<database>dd</database>
</configuration>
ayurep 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 my_out 的回复:]
引用 12 楼 ayurep 的回复:
if (element.GetAttribute("AppName") == node_name)
怎么改成判断 id,现在是属性


既然id是属性。。。
if (element.GetAttribute("id") == node_name)
GetAttribute返回的就id属性的值。。。
[/Quote]

错了,现在是标签,不是属性,看看我的xml结构
AmbitionWakeMeUp 2010-06-11
  • 打赏
  • 举报
回复
查找id属性为node_name的节点
XmlNodeList lis=Doc.SelectNodes("Path[@id=node_name"]);//返回节点结合
ayurep 2010-06-11
  • 打赏
  • 举报
回复



主要是完成那个 修改 键的功能
AmbitionWakeMeUp 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ayurep 的回复:]
if (element.GetAttribute("AppName") == node_name)
怎么改成判断 id,现在是属性
[/Quote]

既然id是属性。。。
if (element.GetAttribute("id") == node_name)
GetAttribute返回的就id属性的值。。。
宇峰科技 2010-06-11
  • 打赏
  • 举报
回复
学习了。。。
ayurep 2010-06-11
  • 打赏
  • 举报
回复
我是把xml做为数据表,存数据。
aiguo0713 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ayurep 的回复:]
带属性的,我知道怎么写,我其实主要想知道,在那个位置判断一下id标签的值为1,就执行修改,怎么改下面的代码实现



C# code
XmlDocument document = new XmlDocument();
document.Load(filename);
XmlNodeList……
[/Quote]
你是不是想把XX.config配置文件用XMlDocument来读取每个节点。我昨天也做了这个。
ayurep 2010-06-11
  • 打赏
  • 举报
回复
if (element.GetAttribute("AppName") == node_name)
怎么改成判断 id,现在是属性
ayurep 2010-06-11
  • 打赏
  • 举报
回复
带属性的,我知道怎么写,我其实主要想知道,在那个位置判断一下id标签的值为1,就执行修改,怎么改下面的代码实现


                XmlDocument document = new XmlDocument();
document.Load(filename);
XmlNodeList childNodes = document.SelectSingleNode("Configuration").ChildNodes;
foreach (XmlNode node in childNodes)
{
XmlElement element = (XmlElement) node;
if (element.GetAttribute("AppName") == node_name)
{
element.SetAttribute("IpType", s_iptype);
element.SetAttribute("DnsType", s_dnstype);
XmlNodeList list2 = element.ChildNodes;
foreach (XmlNode node2 in list2)
{
XmlElement element2 = (XmlElement) node2;
if (element2.Name == "IP")
{
element2.InnerText = s_ip;
}
if (element2.Name == "Mask")
{
element2.InnerText = s_mark;
}
if (element2.Name == "Gateway")
{
element2.InnerText = s_gateway;
}
if (element2.Name == "DNS")
{
element2.InnerText = s_dns;
}
if (element2.Name == "DNS2")
{
element2.InnerText = s_dns2;
}
}
break;
}
}
document.Save(filename);
solszl 2010-06-11
  • 打赏
  • 举报
回复
利用id所属的item在romate里面的INDEX去比对
例如for(int i=0;i<romate.childnode.count;i++)
{
romate.childnode[i] 就可以获得到相应的item了。
再 foreach( )item的子node 进行操作就可以了
}
wuyq11 2010-06-11
  • 打赏
  • 举报
回复
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("a.xml");
XmlNodeList nodeList=xmlDoc.SelectSingleNode("").ChildNodes;
foreach(XmlNode xn in nodeList)
{
XmlElement xe=(XmlElement)xn;
if(xe.GetAttribute("")=="")
{
xe.SetAttribute("","");
}
}
xmlDoc.Save("a.xml");
或XmlElement e = (XmlElement)xmldoc.SelectSingleNode("//[@id='']"
e.SetAttribute( "", "");
aiguo0713 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ayurep 的回复:]
引用 4 楼 denbes 的回复:
XmlDocument doc=new XmlDocument();
doc.loadxml("");
XmlNode node=doc.SelectSingleNode("Remote//Item");
XmlNodeList childs =node.ChildNodes;
foreach(XmlNode node in childs)
{
……
[/Quote]

XmlNode node=xml.SelectSingleNode("/Remote/Item[@id='1']");
whowhen21 2010-06-11
  • 打赏
  • 举报
回复
看这里,希望对你有所帮助, 操作 XML,增删改查
***********************************************************
欢迎使用 CSDN 小秘书
 CSDN 小秘书
***********************************************************
ayurep 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 denbes 的回复:]
XmlDocument doc=new XmlDocument();
doc.loadxml("");
XmlNode node=doc.SelectSingleNode("Remote//Item");
XmlNodeList childs =node.ChildNodes;
foreach(XmlNode node in childs)
{
if (node.Name=……
[/Quote]


如果我要判断一个ID=1应该写在什么 地方?
加载更多回复(4)

110,544

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧