求高手帮忙解析XML

flexstruts 2012-09-20 03:16:00
本人一向不善于C#,在解析xml时,不得其法。本人秋秋,372509319 望高人指点一二。
xml文档太大。无法把代码贴在这里。拜谢
...全文
207 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flexstruts 2012-09-21
  • 打赏
  • 举报
回复
昨天弄了一下。发现他们公司给的CIM接口有问题。不能直接给实例化 。现在可以了。谢谢大家
coolheels 2012-09-20
  • 打赏
  • 举报
回复
阶值对
跟html差不多 都是成对出现的
子集跟在父级里面
主要是Attributes属性 这个东西搞清楚了就行了。

还有 查找的时候是一层一层的向下查找。
xiaolll028 2012-09-20
  • 打赏
  • 举报
回复
50万行xml 看你数据就10万条
不要用字符串撒 换个实体
服务器上跑着快的很 一分钟以下的事情
six-years 2012-09-20
  • 打赏
  • 举报
回复
楼主都是一个一个节点的遍历肯定是很慢的, 不明白你为什么要用字符串存储 我们遍历都直接转换成实体集合 你那五万多行肯定不全是同一级别节点吧 建议解析成实体类集合
flexstruts 2012-09-20
  • 打赏
  • 举报
回复
已经用这种方法解析过了。但时间太长。50多万行数据(xml)。解析出来30W行画了我15分钟。

<cim:Terminal rdf:ID="t9_4363_27031" >
<cim:Naming.description>Disconnector</cim:Naming.description>
<cim:Naming.name>南郊站10kV备用线25手车_27031</cim:Naming.name>
<cim:Terminal.ConductingEquipment rdf:resource="#s62_4363_9" />
<cim:Terminal.ConnectivityNode rdf:resource="#c_62_27031" />
</cim:Terminal>

C#代码

public static string getTerminal(string connectivityNodeID, XmlNamespaceManager xnm, XmlDocument dom)
{
string returnResult = "解析出错";
XmlNodeList stationList = dom.SelectNodes("/rdf:RDF/cim:Terminal", xnm);

if (stationList != null)
{
StringBuilder sb = new StringBuilder();
foreach (XmlNode n in stationList)
{
counts++;
XmlNode desc = n.SelectSingleNode("cim:Terminal.ConnectivityNode", xnm);
string terminalRDF = desc.Attributes["rdf:resource"].Value;
string ptfID = "#" + n.Attributes["rdf:ID"].Value;
XmlNode description = n.SelectSingleNode("cim:Naming.description", xnm);
string namingDescForTerminal = description.InnerText + ",";
XmlNode name = n.SelectSingleNode("cim:Naming.name", xnm);
string namingNameForTerminal = "\t\t\t\t" + "terminal" + "-" + name.InnerText + "\r\n";
if (connectivityNodeID.Equals(terminalRDF))
{
sb.Append("\t").Append(namingNameForTerminal);
}
}
return sb.ToString();
}
else
{
return returnResult;
}
}
天下如山 2012-09-20
  • 打赏
  • 举报
回复
Linq to XML
不错。
dalmeeme 2012-09-20
  • 打赏
  • 举报
回复
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load(@"文件名");
xmlDoc.SelectNodes(@"xpath表达式")或xmlDoc.SelectSingleNode(@"xpath表达式");

xpath表达式参考:http://www.w3school.com.cn/xpath/xpath_syntax.asp

110,591

社区成员

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

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

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