xml怎么读取指定节点的值?

bianjijianjie 2010-09-20 08:42:14
比如xml

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<Name ID="J1">Jone</Name>
<Age>22</Age>
<EmpNo>F7400144</EmpNo>
<College ID="Col1">深圳XX</College>
<Address>湖南岳阳</Address>
<Date>2010-07-11</Date>
</Table>
<NewDataSet>
<NewDataSet>
<Table>
<Name ID="J2">Slice</Name>
<Age>23</Age>
<EmpNo>F7400166</EmpNo>
<College ID="Col2">深圳XX</College>
<Address>湖南</Address>
<Date>2010-07-11</Date>
</Table>
<NewDataSet>

我想读取指定 ID=J1 和ID=Col1的值 怎么做?
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangwenquan123 2010-09-21
  • 打赏
  • 举报
回复

$.ajax({
url:"XMLFile.xml",
dataType:"xml",
success:function(result)
{
$(result).find("ceshi>NewDataSet>Table").each(function(){
$(this).find("Name").each(function(){
if($(this).attr("ID")=="J1")
alert($(this).text());
})
$(this).find("College").each(function(){
if($(this).attr("ID")=="Col1")
alert($(this).text());
})
});
},
error:function(res){alert(res);}
})

经测试可用!
wwfgu00ing 2010-09-21
  • 打赏
  • 举报
回复
 public static string GetXmlValue(string xmlContent, string xmlKey)
{
string xmlValue = "";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlContent);
XmlNode xnode = xmlDoc.DocumentElement;
foreach (XmlNode node in xnode.ChildNodes)
{
if (node.Attributes[0].Value == xmlKey)
{
xmlValue = node.InnerText;
}
}
return xmlValue;
}
huangwenquan123 2010-09-20
  • 打赏
  • 举报
回复
$.ajax({
url:"",
type:"post"
success:function(result){
$(result).find("NewDataSet Table").each(function(){
$(this).find("Name[ID=j1]").val();
$(this).find(College[ID=Coll]).val();
})
}
})
bourbon1795 2010-09-20
  • 打赏
  • 举报
回复
没有根元素,或者说只能有一个根元素。
你有两个。
bianjijianjie 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bourbon1795 的回复:]
lz你这个xml是错误的,没有更元素啊。
[/Quote]
什么意思?不懂啊 ?xml怎么就不对了?
bourbon1795 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q107770540 的回复:]
不对吧。。。
XML拥有多个 根节点 ,NewDataSet未封闭

这是我写的测试代码:

C# code

void Main()
{
string xml = @"<?xml version='1.0' standalone='yes'?>
<NewDataSet>
……
[/Quote]
.net 的新语法真是让人眼花缭乱。
bourbon1795 2010-09-20
  • 打赏
  • 举报
回复
lz你这个xml是错误的,没有更元素啊。
q107770540 2010-09-20
  • 打赏
  • 举报
回复
不对吧。。。
XML拥有多个 根节点 ,NewDataSet未封闭

这是我写的测试代码:

void Main()
{
string xml = @"<?xml version='1.0' standalone='yes'?>
<NewDataSet>
<Table>
<Name ID='J1'>Jone</Name>
<Age>22</Age>
<EmpNo>F7400144</EmpNo>
<College ID='Col1'>深圳XX</College>
<Address>湖南岳阳</Address>
<Date>2010-07-11</Date>
</Table>
<Table>
<Name ID='J2'>Slice</Name>
<Age>23</Age>
<EmpNo>F7400166</EmpNo>
<College ID='Col2'>深圳XX</College>
<Address>湖南</Address>
<Date>2010-07-11</Date>
</Table>
</NewDataSet>";

XElement page = XElement.Parse(xml,LoadOptions.SetLineInfo);
var result =page.Descendants("Table").Where(e => new string[] { "J1", "Col1" }.Contains((string)e.Element("Name").Attribute("ID")));
foreach (var q in result)
{
Console.WriteLine("Element: {0} : Value = {1} ",q.Name,q.Value);
}
}

// 结果:
//Element: Table : Value = Jone22F7400144深圳XX湖南岳阳2010-07-11

beyond_me21 2010-09-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
XmlDocument doc = new XmlDocument();
doc.LoadXml("");
XmlNode temp = doc.SelectSingleNode("NewDataSet/Table/Name[@ID='J1']");
string s = temp.InnerText;
或LINQ TO XML获取值
List<string> result= new ……
[/Quote]
up
wuyq11 2010-09-20
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.LoadXml("");
XmlNode temp = doc.SelectSingleNode("NewDataSet/Table/Name[@ID='J1']");
string s = temp.InnerText;
或LINQ TO XML获取值
List<string> result= new List<string>();
XDocument doc=XDocument.Load("");
var query = from SID in doc.Descendants("") select SID.Value;
foreach (var item in query)
{
result.Add(item);
}

62,271

社区成员

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

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

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

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