C#:带格式xml数据解析的问题

战神 2011-10-20 03:49:57
源码:
<xs:complexType name="FacilityBasicType">
<xs:annotation>
<xs:>设施基本信息数据类型</xs:>
</xs:annotation>
<xs:sequence>
<xs:element ref="Address" minOccurs="0"/>
<xs:element name="Coordinate" type="CoordinatesType" minOccurs="0">
<xs:annotation>
<xs:>地理坐标</xs:>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:>名称</xs:>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="xs:string" use="optional">
<xs:annotation>
<xs:>类别</xs:>
</xs:annotation>
</xs:attribute>
<xs:attribute name="org" type="xs:string" use="optional">
<xs:annotation>
<xs:>所属单位</xs:>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:string">
<xs:annotation>
<xs:>设施id</xs:>
</xs:annotation>
</xs:attribute>
</xs:complexType>
样例数据:
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2010 (http://www.altova.com)-->
<Facility xsi:schemaLocation="http://www.chinansc.cn/2009/nrsml-1 ../routine.xsd" xmlns="http://www.chinansc.cn/2009/nrsml-1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<BasicInfo type="电站" name="海河大型数据" org="海河研究院" id="10001"/>
<ExtensionInfo xsi:type="WarehouseType" designer="中国电力工程有限公司" runningTime="1976.1.5">
<SiteArea note="String" unit="平方米" name="String">
<Value>1567</Value>
</SiteArea>
<BuildingArea note="String" unit="平方米" name="String">
<Value>450</Value>
</BuildingArea>
</ExtensionInfo>
</Facility>



我们这边有两个系统,一个系统提供一个接口,该接口提供数据。而另一个系统则通过调用该接口来访问数据。现在我们双方定义的数据交换格式如上,当我不知道如何使用啊。
它是一个带格式的xml文件,我如何快速、高效的解析出该文件啊?
...全文
362 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
战神 2011-10-21
  • 打赏
  • 举报
回复
带格式的xml数据直接转换成Dataset的问题:http://blog.csdn.net/jianyi7659/article/details/6895340
  • 打赏
  • 举报
回复
XmlDocument doc=new XmlDocument();
doc.Load("xml文件.xml");
doc.Document.SelectSingleNode("xml文件节点名").InnerText=提供的值;
..........
doc.Save("xml文件.xml")
用XmlDocument

也可以用LINQ TO XML

我写过XMLHelper类,把XML数据像操作数据库一样增删改查,LZ开个价,卖给你
jshi123 2011-10-21
  • 打赏
  • 举报
回复
DataTable dt = new DataTable();
dt.ReadXmlSchema(@"xxxx\routine.xsd");
dt.ReadXml(@"xxxx\xxxx.xml");
sdl2005lyx 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jianyi7659 的回复:]

xml格式数据是有自己的数据类型,能否快速的转换成Table或者Dataset
[/Quote]

其实,对于不是很大的xml文件,用那种方式的效率都差不多!
如果你嫌效率不高,可以考虑用XmlTextReader:提供对 XML 数据进行快速、非缓存、只进访问的读取器!
fengyunyin 2011-10-20
  • 打赏
  • 举报
回复
DataSet.ReadXml(FilePath)
gxmark 2011-10-20
  • 打赏
  • 举报
回复
可以考虑LINQ to XML
wjy217213 2011-10-20
  • 打赏
  • 举报
回复
友情帮顶
cjh200102 2011-10-20
  • 打赏
  • 举报
回复
可以将XML文件直接转换成Dataset
yalan 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jianyi7659 的回复:]
楼上的方法不是很有效,该方法我知道。
[/Quote]

除了这个还有什么更好的方法?我认为这是最好的一个方法,是否有效关键看你是否用对了方法哦呵呵~~~

我在中国移动垃圾短信处理系统中就是用这个方法处理的,很有效啊,你看是否你的代码或者思路有问题呢?
战神 2011-10-20
  • 打赏
  • 举报
回复
xml格式数据是有自己的数据类型,能否快速的转换成Table或者Dataset
战神 2011-10-20
  • 打赏
  • 举报
回复
楼上的方法不是很有效,该方法我知道。
yalan 2011-10-20
  • 打赏
  • 举报
回复
提供数据:
XmlDocument doc=new XmlDocument();
doc.Load("xml文件.xml");
doc.Document.SelectSingleNode("xml文件节点名").InnerText=提供的值;
..........
doc.Save("xml文件.xml")

这样就把数据写入了xml文件


读取文件:
XmlDocument doc=new XmlDocument();
doc.Load("xml文件.xml");
string 值1=doc.Document.SelectSingleNode("xml文件节点名").InnerText;
string 值2=doc.Document.SelectSingleNode("xml文件节点名").InnerText;
.....


这就搞定了,很简单的
kingback_07 2011-10-20
  • 打赏
  • 举报
回复
帮你顶一下吧
yalan 2011-10-20
  • 打赏
  • 举报
回复
这个其实很简单,用XmlDocument操作XML文件就行了。

虽然简单,但是要知道的知识不少,自己看看就明白了

http://www.cnblogs.com/dreamof/archive/2008/08/14/1268096.html

110,567

社区成员

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

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

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