关于xml 解析问题

问题描述

现在有一个开发方案,让自己开发一个webservice,对方发送下面的XML信息,我网上找了资料,没发现有解析这样信息的方法,请各位大神帮忙解决。<?xmlversion="1.0"encoding="UTF-8"?><root><!--默认值Start--><!--用户名--><userid>admin</userid><!--密码--><password>123</password><!--权鉴标识--><permission>123</permission><!--默认值End--><body><list><!--手机号可多个手机号一起,用’,’号隔开--><phoneNo>13580557098</phoneNo><!--短信SendId即扩展码--><sendId>10657301849521001151</sendId><!--短信内容--><smsContent>测试短信</smsContent><!--计费用的serviceId代码--><serviceId>7501</serviceId><!--是否需要回复--><needReply>1</needReply><!--发送机构--><company>111111</company><!--指定发送时间--><sendTime>2013-10-2815:58:35</sendTime><!--分区comId--><comId>11111</comId></list></body></root>

解决方案

解决方案二:
<!--这仅仅是个注释,你不用管-->你只管把<userid>admin</userid>里面的admin取出来就行了,网上例子一搜一大把
解决方案三:
咋子可能没有呢如楼上所说例子大把大把的.
解决方案四:
估计楼主是想取出<!--这里面的内容-->这仅仅是个注释,取不到,也用不着取,取出来也没用
解决方案五:
如果你非要获取注释的内容,只能把xml文件当做文本文件来读取,然后自己解析了
解决方案六:
参见:
解决方案七:
XDocument或者XmlSerializer自己解析了。
解决方案八:
用XDocument或者XmlSerialilzer自己解析了。
解决方案九:
引用1楼Z65443344的回复:

<!--这仅仅是个注释,你不用管-->你只管把<userid>admin</userid>里面的admin取出来就行了,网上例子一搜一大把

<userid>admin</userid>这个我获取到了。但是<body><list><!--手机号可多个手机号一起,用’,’号隔开--><phoneNo>13580557098</phoneNo><!--短信SendId即扩展码--><sendId>10657301849521001151</sendId><!--短信内容--><smsContent>测试短信</smsContent><!--计费用的serviceId代码--><serviceId>7501</serviceId><!--是否需要回复--><needReply>1</needReply><!--发送机构--><company>111111</company><!--指定发送时间--><sendTime>2013-10-2815:58:35</sendTime><!--分区comId--><comId>11111</comId></list></body>这里的内容怎么获取
解决方案十:
引用3楼Z65443344的回复:

估计楼主是想取出<!--这里面的内容-->这仅仅是个注释,取不到,也用不着取,取出来也没用

我不要注释的内容。。。网上搜的例子,都没有body的内容啊。
解决方案十一:
直接反序列化吧。。http://www.cnblogs.com/Johnny_Z/archive/2012/06/23/2559408.html
解决方案十二:
XmlTextReaderxmlrdr=newXmlTextReader("http://localhost/test.xml");ds.ReadXml(xmlrdr);stringuserid=ds.Tables["root"].Rows[0][0].ToString();stringpassword=ds.Tables["root"].Rows[0][1].ToString();stringpermission=ds.Tables["root"].Rows[0][2].ToString();stringphoneNo=ds.Tables["list"].Rows[0][0].ToString();stringsendId=ds.Tables["list"].Rows[0][1].ToString();stringsmsContent=ds.Tables["list"].Rows[0][2].ToString();stringserviceId=ds.Tables["list"].Rows[0][3].ToString();stringneedReply=ds.Tables["list"].Rows[0][4].ToString();stringcompany=ds.Tables["list"].Rows[0][5].ToString();stringsendTime=ds.Tables["list"].Rows[0][6].ToString();stringcomId=ds.Tables["list"].Rows[0][7].ToString();

解决方案十三:
staticvoidMain(string[]args){stringxmlContent=@"<?xmlversion=""1.0""encoding=""UTF-8""?>"+"<root>"+"<!--默认值Start-->"+"<!--用户名-->"+"<userid>admin</userid>"+"<!--密码-->"+"<password>123</password>"+"<!--权鉴标识-->"+"<permission>123</permission>"+"<!--默认值End-->"+"<body>"+"<list>"+"<!--手机号可多个手机号一起,用’,’号隔开-->"+"<phoneNo>13580557098</phoneNo>"+"<!--短信SendId即扩展码-->"+"<sendId>10657301849521001151</sendId>"+"<!--短信内容-->"+"<smsContent>测试短信</smsContent>"+"<!--计费用的serviceId代码-->"+"<serviceId>7501</serviceId>"+"<!--是否需要回复-->"+"<needReply>1</needReply>"+"<!--发送机构-->"+"<company>111111</company>"+"<!--指定发送时间-->"+"<sendTime>2013-10-2815:58:35</sendTime>"+"<!--分区comId-->"+"<comId>11111</comId>"+"</list>"+"</body>"+"</root>";XmlDocumentdocment=newXmlDocument();docment.LoadXml(xmlContent);XmlNoderoot=docment.SelectSingleNode("/root");if(root==null)return;stringuserid=root.SelectSingleNode("descendant::*[local-name()='userid']").InnerText;stringpassword=root.SelectSingleNode("descendant::*[local-name()='password']").InnerText;stringpermission=root.SelectSingleNode("descendant::*[local-name()='permission']").InnerText;XmlNodebody=root.SelectSingleNode("descendant::*[local-name()='body']");if(body==null)return;XmlNodelist=body.SelectSingleNode("descendant::*[local-name()='list']");if(list==null)return;stringphoneNo=list.SelectSingleNode("descendant::*[local-name()='phoneNo']").InnerText;stringsendId=list.SelectSingleNode("descendant::*[local-name()='sendId']").InnerText;stringsmsContent=list.SelectSingleNode("descendant::*[local-name()='smsContent']").InnerText;stringserviceId=list.SelectSingleNode("descendant::*[local-name()='serviceId']").InnerText;stringneedReply=list.SelectSingleNode("descendant::*[local-name()='needReply']").InnerText;stringcompany=list.SelectSingleNode("descendant::*[local-name()='company']").InnerText;stringsendTime=list.SelectSingleNode("descendant::*[local-name()='sendTime']").InnerText;stringcomId=list.SelectSingleNode("descendant::*[local-name()='comId']").InnerText;Console.Read();}

代码给你了,你调试看看,应该没有问题,当然我这样写是为了严谨,其实所有的SelectSingleNode都可以由root来调用,只不过防止以后,你的xml里面出现其他的body的内容

时间: 2024-10-16 21:22:20

关于xml 解析问题的相关文章

XML入门教程:XML 解析器

xml|教程|入门教程 如需读取.更新.创建或者操作某个XML文档,则需要XML解析器. 实例 解析XML文件 - 跨浏览器的实例 本例是一个跨浏览器的实例,把某个XML文档("note.xml")载入XML解析器. <html><body><script type="text/vbscript">set xmlDoc=CreateObject("Microsoft.XMLDOM")xmlDoc.async=&

从任意数据结构生成XML解析器产生SAX事件

xml|生成xml|数据|数据结构  在j2ee1.4标准教材里看到一个很有趣的例子,从任意数据结构生成XML解析器产生SAX事件.数据结构可以是文本文件,PDF格式文档等.关键是自己解析这些数据源.另外一个有意思的地方是观察者模式的应用.所以就粗糙的改了一下并完整到可以测试运行.观察者模式简略UML图: 具体实现 被观察者对象ParseXMLSubject类:package test; import java.io.*;import org.xml.sax.helpers.Attributes

XML解析

xml 简介 May 2000 MSXML Technology Preview 的关键功能之一是实现了 SAX2 (Simple API for XML, version 2).MSDN XML 开发人员中心提供的题为 XML 开发人员的 SAX2 快速入门一文和可下载的 Microsoft Visual C++ 应用程序,可作为 SAX2 的简介.在本文中,我将概述用 Visual Basic 编制 SAX2 接口的方式.请注意,不对本示例提供技术支持,本示例的目的仅是帮助您建立 SAX/V

C语言实现的XML解析器

最近做嵌入式开发,板子上面需要有解析XML的功能,理所当然地我就去网上找开源的来用.结果找来的要不是C++的,要不就是超级复杂的.像libxml,我统计了下解析一个40几KB的XML文件,居然动态申请内存100多次,对于没有mmu功能的arm7,真是无福消受了. 所以,我只能自己写一个来用了. 我写的这个xml解析器,非常简单,核心代码只有600多行.当然,功能也相对弱些,只支持ansi编码的xml文件,只能解析,不能生成. 整个解析器只用到了 若干条 EBNF文法 和 一个DFA状态机 (用来

简单实用的Xml解析类

今天有点郁闷,不想干活.整理代码的时候,看到了这个好久之前写的代码,于是想整理 出来供大家拍砖.XML的解析对于.Net平台那真是太简单不过了,感谢微软.但对于C++语言 的XML解析就没那么容易了.有一个开源的XML4C是IBM的,功能强大,但代码大的有几M,而且 对于GB2312的支持有问题,据说能解决,但可能是我天生愚钝,当初我花了2周时间也没搞定 ,最后放弃,自己写了一个.咦?还能跑起来,也能跨平台:). 写这个XML解析类,以功能 最简单,最实用,最常用的功能为原则,因为只能解析,查找

用Visual C++.NET实现XML解析

对于多数开发者来说,Web服务已经成为某种固定不变的东西了,因为他们把Internet看作是促进应用程序应用的最好途径.一些Web服务(例如Amazon.com Web服务)是公共的,并且很容易被要求把这种服务包含在应用程序中.其它一些Web服务是私有的,并且需要访问的特定知识.无论涉及哪种Web服务,他们都依赖XML传递数据.因此,在提到Web服务的时候,XML解析是开发者想到的第一件事. XML解析的其它用途 XML解析并不仅仅局限于Web服务,例如.NET应用程序就能使用XML作为配置信息

微软xml解析器

XML解析器可以读取.更新.创建.操作一个XML文档. -------------------------------------------------------------------------------- 使用XML解析器 微软的XML解析器是和IE5.0+浏览器捆绑在一起的. 一旦你安装了IE5.0,那么就获得了XML解析器.这个浏览器除了被浏览器内部调用外,还可以在脚本中或者程序中调用.这个解析器的特点是支持与程序设计语言无关的编程模型,他支持以下技术: JavaScript,

Android开发之xml解析技术

 在Android中,常见的XML解析器分别为DOM解析器.SAX解析器和PULL解析器,下面,我将一一向大家详细介绍.   第一种方式:DOM解析器: DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树.检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息.Android完全支持DOM 解析.利用DOM中的对象,可以对XML文档进行读取.搜索.修改.添加和删除等操作. DOM的工作原理:使用DOM对XML文件进行操作时,

C++ XML解析之TinyXML篇

最近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成.以后的文章里会讲解使用Xerces进行C++ XML解析的例子,希望大家一起交流. TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译.这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树. DOM模型即文档对象模型,是将整

TinyXML:一个优秀的C++ XML解析器(转载)

/* 读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译.这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树. DOM模型即文档对象模型,是将整个文档分成多个元素(如书.章.节.段等),并利用树型结构表示这些元素之间的顺序关系以及