难度问题....如何读取有多个相同类型的节点的XML文档呢?

gabriel1 2006-06-07 02:11:44
描述:别人通过xmlhttp post过来一个xml字符串.其结构如:
<DataArea>
<DataItem>
<CaseId>1001</CaseId>
<DateTime>2006-5-1</DateTime>
<Contact>
<FirstName>Bob</FirstName>
<LastName>John</LastName>
</Contact>
</DataItem>

<DataItem>
<CaseId>1002</CaseId>
<DateTime>2006-5-2</DateTime>
<Contact>
<FirstName>Mick</FirstName>
<LastName>Smith</LastName>
</Contact>
</DataItem>
</DataArea>

我该怎么逐一获得它的元素?
有人说先在本地声称xml文档,再装到DataSet里。。这个可行么?如果可以,那么Contact子节点存成什么样子?
有没有不用DataSet直接读取得方法?
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2006-06-07
  • 打赏
  • 举报
回复
你可以通过xmlnode来访问它的子结点
xmlnode.ChildNodes
另外

个人感觉这种情况用xml序列化比较好

ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconintroducingxmlserialization.htm
gabriel1 2006-06-07
  • 打赏
  • 举报
回复
to hdt(倦怠).
你说的就是我想要的..

非常感谢..
但是,dataitem里有Contact,里面还有firstname和lastname,怎么处理呢?
lovvver 2006-06-07
  • 打赏
  • 举报
回复
hdt(倦怠) ( ) 的方法。
ProjectDD 2006-06-07
  • 打赏
  • 举报
回复
学习...

楼上是用System.Xml中的主要功能来做的核心类是XmlDocument加XPath
...
真相重于对错 2006-06-07
  • 打赏
  • 举报
回复
XmlDocument doc = new XmlDocument();
doc.LoadXml( strXml );
XmlNodeList nodes = doc.SelectNodes("DataArea/DataItem/Contact")
foreach( XmlNode node in nodes )
{
.....
}
gabriel1 2006-06-07
  • 打赏
  • 举报
回复
不太明白.....能说清楚点呢?
lwjvince 2006-06-07
  • 打赏
  • 举报
回复
我有个是用文本框处理的 跟你的设想有异曲同工之妙 是用JAVASCRIPT 写的
获取节点。。
代码给你看看吧
function inRow(objTable,itemId)
{
//取得指定表格的TBODY
var tbodyOnlineEdit=objTable.getElementsByTagName("TBODY")[0];
//取得指定表格的THEAD
var theadOnlineEdit=objTable.getElementsByTagName("THEAD")[0];
//获取当前节点的位置
var parent=objTable.childNodes [0];//根节点tbody
var child=parent.childNodes[itemId];
var elm = objTable.lastChild.lastChild.cloneNode(true);
elm.style.display="";
for(var c=1;c<elm.children.length;c++)//清除值
{
elm.children[c].children[0].value="";//清除数据,因为最后一行是新加的,不应有数据
}
//把elm插入到TBODY并做为TBODY的一个子元素
tbodyOnlineEdit.insertBefore(elm,child);
}
------------
<tr>
<td class="bd1" width="2">序号</td>
<%=td%>
</tr>
-----------
for( i=0;i<colNum;i++)//取列名
{
tbt=ds.Tables ["rs1"].Columns [i].ColumnName .ToString ();
td+="<td class=\"bd1\">"+tbt+"</td>";
}
gabriel1 2006-06-07
  • 打赏
  • 举报
回复
真有难度啊 .

110,499

社区成员

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

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

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