非哥问个XML问题

ws_hgo 2010-06-11 04:24:03
<type name="项目">
<Project value="给水">
<item value="净水厂">
<param>净水量=万立方米/日</param>
</item>
<item value="管网泵站">
<param>流水量=万立方米/日</param>
</item>
<item value="管网管道">
<param>管道直径=毫米</param>
</item>
</Project>

<Project value="排水">
<item value="处理厂">
<param>处理量=万立方米/日</param>
</item>
<item value="管网泵站">
<param>流水量=万立方米/日</param>
</item>
<item value="管网管道">
<param>管道直径=毫米</param>
</item>
</Project>

<Project value="燃气">
<item value="城市燃气输配系统">
<param>输配量=万立方米/日</param>
</item>
<item value="人工气源厂">
<param>产量=万立方米/日</param>
</item>
<item value="城市液化石油气储备站">
<param>产量=瓶/日罐装能力</param>
</item>
</Project>

</type>


我要实现的功能是
我现在已经有<Project value="给水">
的值假设是给水
我想根据这个值得到
它的所有item信息
如果是给水的话就是
净水厂,管网泵站,管网管道
这个功能怎么实现
...全文
185 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
PxxxP 2010-06-11
  • 打赏
  • 举报
回复
  //var Query = from q in doc.Element("type").Elements("Project")
//where q.Attribute("value").Value == "给水"
//select q;

var Query = XDocument.Parse(xml).Element("type").Elements("Project").
Where(v => v.Attribute("value").Value == "给水").
Select(v => v);
諾临風 2010-06-11
  • 打赏
  • 举报
回复
你搞定了,是不是散点分啊?我们穷人啊
PxxxP 2010-06-11
  • 打赏
  • 举报
回复
string xml = @"
<type name=""项目"">
<Project value=""给水"">
<item value=""净水厂"">
<param>净水量=万立方米/日</param>
</item>
<item value=""管网泵站"">
<param>流水量=万立方米/日</param>
</item>
<item value=""管网管道"">
<param>管道直径=毫米</param>
</item>
</Project>

<Project value=""排水"">
<item value=""处理厂"">
<param>处理量=万立方米/日</param>
</item>
<item value=""管网泵站"">
<param>流水量=万立方米/日</param>
</item>
<item value=""管网管道"">
<param>管道直径=毫米</param>
</item>
</Project>

<Project value=""燃气"">
<item value=""城市燃气输配系统"">
<param>输配量=万立方米/日</param>
</item>
<item value=""人工气源厂"">
<param>产量=万立方米/日</param>
</item>
<item value=""城市液化石油气储备站"">
<param>产量=瓶/日罐装能力</param>
</item>
</Project>

</type>
";
XDocument doc = XDocument.Parse(xml);
var Query = from q in doc.Element("type").Elements("Project")
where q.Attribute("value").Value == "给水"
select q;
foreach (var v in Query)
{
foreach (var x in v.Elements("item"))
{
Console.WriteLine("value={0} param={1}", x.Attribute("value").Value, x.Element("param").Value);
}
}
/*
value=净水厂 param=净水量=万立方米/日
value=管网泵站 param=流水量=万立方米/日
value=管网管道 param=管道直径=毫米

*/
Xiaoyuan245437 2010-06-11
  • 打赏
  • 举报
回复
JF`
dd__dd 2010-06-11
  • 打赏
  • 举报
回复
换头像了
ws_hgo 2010-06-11
  • 打赏
  • 举报
回复
MD公司的这破网速
ws_hgo 2010-06-11
  • 打赏
  • 举报
回复
就是建哥这个
谢谢啊
工作中第一次操作XML


不要BS偶
皇城龙三 2010-06-11
  • 打赏
  • 举报
回复
http://wangdeshui.javaeye.com/blog/275467
用XmlReader读取XML文档

(1) 使用XmlReader类的Create()创建该类的一个实例,并将被读取的XML文件名称作为参数传入方法

(2) 建立一个反复调用的Read()方法的循环。这个方法从文件的第一个节点开始,然后读取所有余下的节点,但每次调用只读取一个节点,如果存在一个节点可被读取 则返回True,当到达文件最后时返回False.

(3) 在这个循环中将检查XmlReader对象的属性和方法,以获得当前节点的信息(类型、名称、数据等等),不断地执行该循环知道Read()返回False.
......
我姓区不姓区 2010-06-11
  • 打赏
  • 举报
回复

XmlDocument doc = new XmlDocument();
doc.Load("D:\\test.xml");
XmlNode node = doc.SelectSingleNode("type/Project[@value=\"给水\"]");
if (node != null)
{
foreach (XmlNode xn in node.SelectNodes("item"))
{
Console.WriteLine(xn.Attributes["value"].Value);
}
}
熙风 2010-06-11
  • 打赏
  • 举报
回复
学习,学习,
皇城龙三 2010-06-11
  • 打赏
  • 举报
回复
可以引用System.Xml,用XmlTextReader来做
djy252 2010-06-11
  • 打赏
  • 举报
回复
这样可以不可以
你可以给<Project value="给水">添加一个属性,通过这个属性 是否查询取出他的子

62,074

社区成员

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

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

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

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