如何把这种格式的XML读入到DataSet

lin_shengyong 2009-02-07 04:42:45
<viewentry position="1" unid="24702089681CF91648257406003E4C9A" noteid="906" siblings="212">
<entrydata columnnumber="0" name="DepartmentCode">
<text>10</text></entrydata>
<entrydata columnnumber="1" name="ParentDepCode">
<text>2</text></entrydata>
<entrydata columnnumber="2" name="DepName">
<text>部门1</text></entrydata>
</viewentry>
<entrydata columnnumber="0" name="DepartmentCode">
<text>11</text></entrydata>
<entrydata columnnumber="1" name="ParentDepCode">
<text>2</text></entrydata>
<entrydata columnnumber="2" name="DepName">
<text>部门2</text></entrydata>
</viewentry>

读入到DataSet的格式为三列,
10|2|部门1
11|3|部门2
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin_shengyong 2009-02-08
  • 打赏
  • 举报
回复
哎。。还有个问题,如何在SQL中用openxml查询出来呢
lin_shengyong 2009-02-07
  • 打赏
  • 举报
回复
呵呵,谢谢两位,尤其是CutBug。。问题解决。。结贴
CutBug 2009-02-07
  • 打赏
  • 举报
回复
xsd没做过什么研究,来个其他的方法吧
 XmlDocument xmlDoc = new XmlDocument();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string sp = MapPath("~/1.xml");
xmlDoc.Load(sp);

string[] columns ={"DepartmentCode","ParentDepCode","DepName"};
string sXpth = "entrydata[@name='{0}']";

foreach(string col in columns)
{
dt.Columns.Add(new DataColumn(col,typeof(string)));
}

foreach (XmlNode node in xmlDoc.SelectNodes("//viewentries/viewentry"))
{
DataRow row = dt.NewRow();
foreach (string col in columns)
{
XmlNode n = node.SelectSingleNode(string.Format(sXpth, col));
row[col] = n.InnerText;
Response.Write(string.Format("{0}:{1}\t",col,row[col]));
}
dt.Rows.Add(row);
Response.Write("<br>");
}
ds.Tables.Add(dt);


输出:
DepartmentCode:1 ParentDepCode:0 DepName:部门1
DepartmentCode:10 ParentDepCode:2 DepName:部门2
wanghui0380 2009-02-07
  • 打赏
  • 举报
回复
试着转了一下xsd架构,架构图如下。


基本上一要的就是图里那个entrydata表
wanghui0380 2009-02-07
  • 打赏
  • 举报
回复
直接用ds.ReadXml不行
呵呵,并非不行,不过是你不知道他默认的转换格式,so,你完全可以在readxml以后,然后用WriteXmlSchema把默认转换架构写到一个xsd架构文件里,只要看一眼该架构文件,你就会明白他默认生成的那个dataset是啥结构了

呵呵,个人对xsd架构没做重点研究,所以一眼看不来结构,才用上面这种取巧的方式,如果是对xsd有研究滴,估计一眼就能知道默认的dataset是啥结构滴
CutBug 2009-02-07
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
直接用ds.ReadXml不行,你要的数据在ds.Tables[2]里,不过里面是6行
还是要XmlDocument Select一下再往里加数据
lin_shengyong 2009-02-07
  • 打赏
  • 举报
回复
原XML格式是这样的
<?xml version="1.0" encoding="UTF-8"?>
<viewentries toplevelentries="212">
<viewentry position="1" unid="D73A0C3B56A64494482574050024D8DD" noteid="8FA" siblings="212">
<entrydata columnnumber="0" name="DepartmentCode">
<text>1</text></entrydata>
<entrydata columnnumber="1" name="ParentDepCode">
<text>0</text></entrydata>
<entrydata columnnumber="2" name="DepName">
<text>部门1</text></entrydata>
</viewentry>

<viewentry position="2" unid="24702089681CF91648257406003E4C9A" noteid="906" siblings="212">
<entrydata columnnumber="0" name="DepartmentCode">
<text>10</text></entrydata>
<entrydata columnnumber="1" name="ParentDepCode">
<text>2</text></entrydata>
<entrydata columnnumber="2" name="DepName">
<text>部门2</text></entrydata>
</viewentry>

</viewentries>

62,269

社区成员

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

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

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

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