c# 操作XML

wang520d 2008-03-11 09:50:16
怎么根据channelid定位到number 换句话说就是 找相邻节点

<alldevices>
<devices>
<device>
<channelid>0</channelid>
<number>59151010</number>
<group>LocalCode</group>
</device>
<device>
<channelid>1</channelid>
<number>59151010</number>
<group>LocalCode</group>
</device>
<device>
<channelid>2</channelid>
<number>59151010</number>
<group>LocalCode</group>
</device>
<device>
<channelid>3</channelid>
<number>59151010</number>
<group>LocalCode</group>
</device>
<device>
<channelid>4</channelid>
<number>59151010</number>
<group>
</group>
</device>

</devices>
</alldevices>
...全文
353 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/demo.xml"));
XmlNode n = doc.SelectSingleNode("/alldevices/devices/device[channelid='0']");
if (n != null)
{
n.ParentNode.RemoveChild(n);
}
doc.Save(Server.MapPath("~/demo.xml"));
}

这个值 channelid='0' 你可以根据你的逻辑进行修改.
vrhero 2008-03-12
  • 打赏
  • 举报
回复
将XML反序列化为对象集合...再写相应的查询与增删改方法...
hsxgodkiller 2008-03-12
  • 打赏
  • 举报
回复
找到对应的channelid的节点之后,利用ParentNode 找到其父节点device,然后remove就可以了吧
wang520d 2008-03-11
  • 打赏
  • 举报
回复
XML设计有问题吧。。为什么不把channelid作为一个属性呢?
============
这个我也发现了 但是我不想改变他的设计
avavaav 2008-03-11
  • 打赏
  • 举报
回复
XML设计有问题吧。。为什么不把channelid作为一个属性呢?
wang520d 2008-03-11
  • 打赏
  • 举报
回复
c# 怎么执行一个布尔结果集的XPATH?
wang520d 2008-03-11
  • 打赏
  • 举报
回复
加为好友
发送私信
在线聊天
ericzhangbo1982111

等级:
发表于:2008-03-11 09:59:303楼 得分:0
XmlDocument document = new XmlDocument();
document.Load(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName) + "\\Error.xml");

//xmlpath 取得channelid=4的device节点
XmlElement element = (XmlElement)document.SelectSingleNode("//alldevices//device[channelid='4']");
document.RemoveChild(element);
================================
上面删除的只是channelid一个节点吧。。
我是想把 channelid 所在的 device节点删除。包括里面的 channelid number group 三个相邻的节点
wang520d 2008-03-11
  • 打赏
  • 举报
回复
获取紧接在该节点之后的节点。

C# codepublic virtual XmlNode NextSibling { get; }

====================
这个怎么用啊?
ericzhangbo1982111 2008-03-11
  • 打赏
  • 举报
回复
XmlDocument document = new XmlDocument();
document.Load(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName) + "\\Error.xml");

//xmlpath 取得channelid=4的device节点
XmlElement element = (XmlElement)document.SelectSingleNode("//alldevices//device[channelid='4']");
document.RemoveChild(element);
lovehongyun 2008-03-11
  • 打赏
  • 举报
回复
获取紧接在该节点之后的节点。
public virtual XmlNode NextSibling { get; }
wang520d 2008-03-11
  • 打赏
  • 举报
回复
我想根据channelid去查询 或者 删除一个 device节点
<device>
<channelid>4</channelid>
<number>59151010</number>
<group>
</group>
</device>
yinxubest87 2008-03-11
  • 打赏
  • 举报
回复
思考中。。。。。。。。。。。。。。
ericzhangbo1982111 2008-03-11
  • 打赏
  • 举报
回复
....我的xmlpath就是取得devcie节点和他的子节点。。。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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