求一个xpath表达式

hellen_cap 2009-06-12 02:03:42
xml文档:
<text>
<ln>kjsdfdsklf</ln>
<name1>1</name1>
<name2>2</name1>
<name3>3</name1>
<name4>4</name1>
</text>


我想得到的是
<name1>1</name1>
<name2>2</name1>
<name3>3</name1>
<name4>4</name1>

包括name1(2、3、4)以及它的值1、2、3、4

请问我该怎么写呢?
...全文
67 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyoubaidu 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wartim 的回复:]
引用 6 楼 lovefootball 的回复:
精确一点应该这样
XmlNodeList list = doc.SelectNodes("/text/*[contains(name(),'name')]");

text节点下所有名字中包含name的节点


用starts-with更好吧

C# codeusing System;using System.Collections.Generic;using System.Text;using System.Xml;namespace ConsoleApplication31
{class Program
{staticvoid Main(string[] args)
{
XmlDocument Doc=new XmlDocument();
Doc.LoadXml("<text>"+"<ln>kjsdfdsklf </ln>"+"<name1>1 </name1>"+"<name2>2 </name2>"+"<name3>3 </name3>"+"<name4>4 </name4>"+"</text>");

XmlNodeList Nodes= Doc.SelectNodes("/text/*[starts-with(name(),'name')]");foreach (XmlNode Nodein Nodes)
Console.WriteLine("name:"+ Node.Name+" value:"+ Node.InnerText);
Console.Read();
}
}
}
[/Quote]
up
lovefootball 2009-06-12
  • 打赏
  • 举报
回复
恩,对的,虽然都可以实现,starts-with更好些

唉,老了,呵呵
binhu12332100 2009-06-12
  • 打赏
  • 举报
回复
学习……
wartim 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lovefootball 的回复:]
精确一点应该这样
XmlNodeList list = doc.SelectNodes("/text/*[contains(name(),'name')]");

text节点下所有名字中包含name的节点
[/Quote]

用starts-with更好吧

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace ConsoleApplication31
{
class Program
{
static void Main(string[] args)
{
XmlDocument Doc = new XmlDocument();
Doc.LoadXml("<text>"
+ "<ln>kjsdfdsklf </ln>"
+ "<name1>1 </name1> "
+ "<name2>2 </name2> "
+ "<name3>3 </name3> "
+ "<name4>4 </name4> "
+ "</text> ");

XmlNodeList Nodes = Doc.SelectNodes("/text/*[starts-with(name(),'name')]");
foreach (XmlNode Node in Nodes)
Console.WriteLine("name:" + Node.Name + " value:" + Node.InnerText);
Console.Read();
}
}
}
十八道胡同 2009-06-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lovefootball 的回复:]
精确一点应该这样
XmlNodeList list = doc.SelectNodes("/text/*[contains(name(),'name')]");

text节点下所有名字中包含name的节点
[/Quote]

ding
yang1216 2009-06-12
  • 打赏
  • 举报
回复
6楼相当强,学习。
lovefootball 2009-06-12
  • 打赏
  • 举报
回复
精确一点应该这样
XmlNodeList list = doc.SelectNodes("/text/*[contains(name(),'name')]");

text节点下所有名字中包含name的节点
lovefootball 2009-06-12
  • 打赏
  • 举报
回复
XmlNodeList list = doc.SelectNodes("//*[contains(name(),'name')]");
这样应该可以的
lovefootball 2009-06-12
  • 打赏
  • 举报
回复
我记着xpath有个contains函数
你可以Google下
gciyfzx07 2009-06-12
  • 打赏
  • 举报
回复
没有什么规律可找,直接通过结点查出来了
hellen_cap 2009-06-12
  • 打赏
  • 举报
回复
dataset? 能说具体点吗
angel6709 2009-06-12
  • 打赏
  • 举报
回复
? ??????????????????
<name1>1 </name1>
<name2>2 </name1>
<name3>3 </name1>
<name4>4 </name1>
----------------->
<name1>1 </name1>
<name2>2 </name2>
<name3>3 </name3>
<name4>4 </name4>


用dataSet最简单

110,536

社区成员

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

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

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