问题描述
现在有一个开发方案,让自己开发一个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的内容