关于复杂XML解析成DataTable,求大神解答

苦逼de小Coder 2012-09-25 10:50:24
XML文件如下:
<?xml version="1.0" encoding="gb2312"?>
<air_info ret_value="1" date="14SEP(FRI)" from="SHA" to="CAN" fromname="上海虹桥" toname="广州" Mileage="1308" fule_adult="130" fule_child="60">
<airline line_number="MU5307" share_line="" company="东方航空" sc="SHA" sa="上海虹桥机场" ac="CAN" aa="广州白云机场" stime="0730" atime="0950" airrax="50" fulerax="130" fueladu="130" fuelchd="60" food="1" food_detail="S" dfly="1" type="320" et="1" stn="T2" atn="--">
<c b="F" u="0" d="230折" p="2940" s="2" t="2"></c>
<c b="P" u="0" d="*未知" p="0" s="0" t="Q"></c>
<c b="A" u="0" d="*未知" p="0" s="0" t="S"></c>
<c b="Y" u="0" d="100折" p="1280" s="A" t="A"></c>
<c b="K" u="0" d="*未知" p="0" s="A" t="A"></c>
<c b="B" u="0" d="95折" p="1220" s="A" t="A"></c>
<c b="E" u="0" d="90折" p="1150" s="A" t="A"></c>
<c b="H" u="0" d="85折" p="1090" s="A" t="A"></c>
<c b="L" u="0" d="80折" p="1040" s="A" t="A"></c>
<c b="M" u="0" d="77折" p="990" s="0" t="Q"></c>
<c b="N" u="0" d="73折" p="930" s="0" t="Q"></c>
<c b="R" u="0" d="70折" p="880" s="0" t="Q"></c>
<c b="S" u="0" d="65折" p="830" s="0" t="Q"></c>
<c b="V" u="0" d="55折" p="700" s="0" t="Q"></c>
<c b="T" u="0" d="50折" p="640" s="0" t="Q"></c>
<c b="W" u="0" d="*未知" p="0" s="0" t="Q"></c>
<c b="G" u="0" d="*未知" p="0" s="0" t="Q"></c>
<c b="X" u="0" d="*未知" p="0" s="0" t="Q"></c>
<c b="Q" u="0" d="*未知" p="0" s="A" t="A"></c>
<c b="I" u="0" d="*未知" p="0" s="5" t="5"></c>
</airline>
</air_info>
...全文
247 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zz5174213267 2012-09-25
  • 打赏
  • 举报
回复
如果是有选择性的筛选解析成dt的话,直接用liqu查询的枚举再转成dt
zf904 2012-09-25
  • 打赏
  • 举报
回复
//讲某路径下xml文件读入DataSet
string fileName = DataCom.UploadPath + "\\" + tableName;
if (File.Exists(fileName + ".xml") == false)
{
MessageBox.Show("没有数据包。");
return false;
}

////初始化XML架构文件操作流
//FileStream FsXSD = new FileStream(fileName + ".xsd", FileMode.Open);
////初始化XML架构读取设备
//XmlTextReader xtrXSD = new XmlTextReader(FsXSD);

//初始化DataSet
DataSet DS = new DataSet();
////载入XML架构到DS中
//DS.ReadXmlSchema(xtrXSD);
//按照装载的XML架构载入XML数据到DS
DS.ReadXml(fileName + ".xml", XmlReadMode.ReadSchema);
hfjfhxfufckg 2012-09-25
  • 打赏
  • 举报
回复
C#里有个ReadXml的方法 可以将XML转换成datatable类型
DataTable.ReadXml(Stream stream)
苦逼de小Coder 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

对比的table有个固定的格式 是节点里面的每个属性都对应一个字段吗?
子节点与父节点应该也有关系吧 条件又是什么呢?
[/Quote]
只对比一部分,不全部对比,只是需要对比之后添加一些数值或者修改一些数值
hfjfhxfufckg 2012-09-25
  • 打赏
  • 举报
回复
对比的table有个固定的格式 是节点里面的每个属性都对应一个字段吗?
子节点与父节点应该也有关系吧 条件又是什么呢?
苦逼de小Coder 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

解析成一个datatable不是很麻烦吗?
[/Quote]
解析出来的数据要和数据库中的数据对比
hfjfhxfufckg 2012-09-25
  • 打赏
  • 举报
回复
解析成一个datatable不是很麻烦吗?
苦逼de小Coder 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

你是说将整个XML都解析成DATATABLE还是说只是将某一个节点下的内容解析成DATATABLE类型?
[/Quote]
将整个XML解析成datatable
hfjfhxfufckg 2012-09-25
  • 打赏
  • 举报
回复
你是说将整个XML都解析成DATATABLE还是说只是将某一个节点下的内容解析成DATATABLE类型?
苦逼de小Coder 2012-09-25
  • 打赏
  • 举报
回复
UP!别沉
bdmh 2012-09-25
  • 打赏
  • 举报
回复
先搞明白如何解析xml,剩下的就是将取得的数据,自己组织到datatable
本课程是PowerBI系列课程之DAX函数专题讲解,包含以下内容 1.  DAX函数基础知识什么是DAX函数数学函数:ABS、DIVIDE、MOD、RAND、ROUND、FIXED等日期和时间函数: CALENDAR、CALENDARAUTO、MONTH、YEAR、DATE、DT等信息函数:USERNAME、USERPRINCIPALNAME、HASONEFILTER、HASONEVALUE、ISFILTERED、ISCROSSFILTERED、ISINSCOPE、ISBLANK、SELECTEDMEASURE、SELECTEDMEASURENAME等逻辑函数:AND、OR、IF、IFERROR、SWITCH、TRUE、FALSE、COALESCE(官方文档含糊不清-结合实例)等关系函数:CROSSFILTER、RELATED、RELATEDTABLE等筛选器函数:FILTER、CALCULATE、ALL、ALLEXCEPT、ALLSELECTED、EARLIER、KEEPFILTERS、REMOVEFILTERS、SELECTEDVALUE、LOOKUPVALUE等父子函数:PATH、PATHCONTAINS、PATHITEM、PATHLENGTH等统计函数:AVERAGE、COUNT、MAX、MIN、SUM等迭代统计函数:AVERAGEX、COUNTX、MAXX、MINX、SUMX、RANKX等表函数: FILTERS 、ADDCOLUMNS、 SELECTCOLUMNS、 CROSSJOIN、 EXCEPT、 GENERATE、 GROUPBY、 SUMMARIZE、 SUMMARIZECOLUMNS、 TOPN、 TREATAS、 UNION、 VALUES、DISTINCT、DATATABLE、NATUALINNERJOIN、NATRUALLEFTOUTERJOIN等文本函数: EXACT、MID、 FIND、 LEN、 REPT、 LOWER、 UPPER、 UNICHAR等时间智能函数:DATEADD、DATESMTD、FIRSTDATE、LASTDATE、SAMEPERIODLASTYEAR等财务函数:2020.7之后发布的,和Excel中财务函数相似,网页和demo pbix简单介绍其他函数:BLANK、ERROR、IFERROR等 DAX函数初体验:Max、Sum、Divide、if、Values等值函数表函数以及表和列的概念DAX函数术语、语法、运算符DAX运算符和引擎中字母大小写问题DAX编程注释和快捷键DAX与Excel函数的共同点和区别(PPT)DAX、xmSQL与SQL表达式的区别(PPT)DAX函数的自学途径 2.  PowerBI中数据建模知识维度建模关系传递和交叉筛选器方向-理解表关系(1v1, 1vM, Mv1,MvM)两个方向上应用安全筛选器关闭关系自动检测新建计算列新建度量值新建计算表:辅助表(五种方式)、日历表数据类型讲解数据格式控制:%、$、千位分隔符、小数位、日期格式Format函数自定义数据格式Convert函数做数据类型转换解决中文数字单位 万 的显示问题Date和DT函数定义固定日期值显示和隐藏列DAX代码分析器阅读DAX表达式方法:从上至下、由内到外(注意Calculate的计算顺序)调试DAX表达式方法:分布输出或VAR输出3.  DAX函数原理 Vertipaq列式数据库原理理解度量值和计算列理解行上下文和筛选上下文:Calculate示意图行上下文中使用VAR替代EARLIERVAR变量在定义时的上下文中计算VAR变量是采用惰性计算(使用时计算)理解扩展表和RELATED函数理解数据沿袭Lineage 4.  开始感知DAX函数的强大DAX函数实现特殊符号的使用DAX函数实现切片器默认当前月或天DAX函数使切片器默认代表无任何选择DAX函数使切片器仅显示有数据的选项DAX函数使切片器反向筛选和计算DAX函数使切片器之间取并集DAX函数使关系中多端的切片器筛选一端的切片器 DAX函数实现年月共同决定数据排序DAX函数实现动态图表标题DAX函数实现动态图表配色和图标DAX函数实现动态纵坐标DAX函数实现动态横坐标5.  理解重点DAX函数重中之重FILTER 和 CALCULATE和CALCULATETABLE详解调节器REMOVEFILTERS和ALL、ALLEXCEPT函数调节器ALL、ALLSELECTED和ISINSCOPE占比分析调节器AllSELECTED和KEEPFILTERS的比较调节器USERELATIONSHIP激活关系调节器TREATAS动态建立关系调节器CROSSFILTER改变筛选器方向重点之ISFILTERED和ISCROSSFILTERED重点之HASONEVALUE和ISINSCOPE的区别重点之表函数SELECTEDCOLUMNS和ADDCOLUMNS重点之表函数NATUALINNERJOIN和NATRUALLEFTOUTERJOIN重点之表函数FILTERS和VALUES比较重点之VALUES和DISTINCT的区别重点之分组函数SUMMARIZECOLUMNS详解重点之函数LOOKUPVALUE vs RELATED vs VLOOKUP 重点之集合函数UNION、INTERSECT、EXCEPT重点之集合函数CROSSJOIN和GENERATE 笛卡尔积重点之值合并、列合并、表合并CONCATENATEX重点之BLANK行产生的原因和BLANK相关函数重点之COALESCE函数处理空重点之FIRSTNOBLANK和FIRSTNOBLANKVALUE函数重点之使用VAR变量表中的列重点之Error和IfError函数6.  实际案例-日期时间和时间智能相关关键点-日期表和事实表关联问题时间智能-同比环比分析时间智能-累计聚合、滚动聚合、移动平均时间智能-期初期末库存分析日期分析-计算任意所选月份的环比日期分析-周的同比环比和周聚合日期分析-指定月份的同比环比和季度环比日期分析-计算季末或季末月份的数据日期分析-趋势图中根据最近月份取TopN日期分析-动态指定某个日期区间分析日期分析-动态任意区间段做数据对比日期分析-实现两个日期列的范围筛选日期分析-按工作日计算日期差日期分析-计算最近两次购买日期差日期分析-根据历史数据做销售预测日期时间函数和时间智能函数使用总结7.  实际案例-DAX函数进阶进阶-解决列排序对计算的影响进阶-实现切片器筛选之间的OR逻辑进阶-矩阵Matrix中高亮显示最大值最小值进阶-DAX列转行 vs 矩阵列转行和逆透视进阶-非日期类型的累计聚合进阶-排名逻辑的4种实现-RANKX详解进阶-分组内排名的实现和理解迭代函数进阶-TopN/BottomN和Others的实现进阶-TopN中实现动态指标进阶-TopN中实现N的动态进阶-分组内动态TopN和Others 进阶-商品折上折-迭代函数SUMX详解 进阶-分析客户购买行为进阶-找出无购买行为的客户进阶-客户购买商品关联度分析 进阶-新客户分析进阶-流失客户分析进阶-回流客户分析进阶-客户购买频次和区间分析进阶-RFM客户价值分析进阶-帕累托分析进阶-盈亏平衡分析报表性能优化思路(PPT)  

110,825

社区成员

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

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

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