生命的追问 张海迪XML的问题

用xmltextreader读取xml的简单问题-c/c++-电脑编程网用xmltextreader读取xml的简单问题作者:ljial 和相关&&我的xml文件是这样的 &?xml & version= &1.0 & & encoding= &utf-8 & & ?&
&StoredProcedureList&
&StoredProcedure & ID & = &
&usp_get_gpxx &&
&Parameters&
&Name& gpdm &/Name&
&Type& char &/Type&
&/Parameters&
&/StoredProcedure & &
&/StoredProcedureList&
如果用xmltextreade读取其中parameters下的name和type值。谢谢------回答---------------其他回答(100分)---------using & S using & System.X using & System.Collections.G public & class & MyClass { &
& public & static & void & Main() &
& string & str & = & @ & &?xml & version= & &1.0 & & & encoding= & &utf-8 & & & ?&
&StoredProcedureList&
&StoredProcedure & ID & = &
& &usp_get_gpxx & &&
&Parameters&
&Name& gpdm &/Name&
&Type& char &/Type&
&/Parameters&
&/StoredProcedure & &
&/StoredProcedureList&
& XmlTextReader & xtr & = & new & XmlTextReader(str,XmlNodeType.Element,null); &
& while & (xtr.Read()) & { &
& if & (xtr.Name & == &
&Parameters &) &
& xtr.Read(); &
& string & key & = & string.E &
& Dictionary &string, & string&
& result & = & new & Dictionary &string, & string& (); &
& while & ( & xtr.Name & != &
&Parameters &) &
& if(XmlNodeType.Element & == & xtr.NodeType){ &
& key & = & xtr.N &
& else & if & (XmlNodeType.Text & == & xtr.NodeType) & { &
& result.Add(key, & xtr.Value); &
& xtr.Read(); &
& foreach & (string & k & in & result.Keys) & { &
& Console.WriteLine( &{0}:{1} &, & k, & result[k]); &
& catch & (Exception & e) &
& Console.WriteLine(e.ToString()); &
& finally &
& Console.WriteLine( &END &); &
& Console.Read(); &
& } } 只是我不明白为什么一定要用xmltextreader去读?------回答---------------其他回答(100分)---------using & S
using & System.X
using & System.Collections.G
public & class & MyClass
& public & static & void & Main()
& string & str & = & @ & &?xml & version= & &1.0 & & & encoding= & &utf-8 & & & ?&
&StoredProcedureList&
&StoredProcedure & ID & = &
& &usp_get_gpxx & &&
&Parameters&
&Name& gpdm &/Name&
&Type& char &/Type&
&/Parameters&
&/StoredProcedure & &
&/StoredProcedureList&
& XmlTextReader & xtr & = & new & XmlTextReader(str,XmlNodeType.Element,null);
& while & (xtr.Read()) & {
& if & (xtr.Name & == &
&Parameters &)
& xtr.Read();
& string & key & = & string.E
& Dictionary &string, & string&
& result & = & new & Dictionary &string, & string& ();
& while & ( & xtr.Name & != &
&Parameters &)
& if(XmlNodeType.Element & == & xtr.NodeType){
& key & = & xtr.N
& else & if & (XmlNodeType.Text & == & xtr.NodeType) & {
& result.Add(key, & xtr.Value);
& xtr.Read();
& foreach & (string & k & in & result.Keys) & {
& Console.WriteLine( &{0}:{1} &, & k, & result[k]);
& catch & (Exception & e)
& Console.WriteLine(e.ToString());
& Console.WriteLine( &END &);
& Console.Read();
只是我不明白为什么一定要用xmltextreader去读?相关资料:|||||||用xmltextreader读取xml的简单问题来源网络,如有侵权请告知,即处理!编程Tags:                &                    xml常见问题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
&&¥2.00
喜欢此文档的还喜欢
xml常见问题
x​m​l​常​见​问​题
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:26.88KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢&out-file&
&field name="goods-id"&110204&/field&
&field name="amount"&3&/field&
&field name="total-sum"&0&/field&
&field name="goods-id"&110242&/field&
&field name="amount"&10&/field&
&field name="total-sum"&0&/field&
&field name="goods-id"&110271&/field&
&field name="amount"&10&/field&
&field name="total-sum"&0&/field&
&field name="goods-id"&208005&/field&
&field name="amount"&39&/field&
&field name="total-sum"&0&/field&
&/out-file&
定义了一个现成的类保存单个的&row&public class IOFileRecord { /**
* 商品编码
*/ private String goodsID; /**
*/ private S /**
*/ private String totalS……}如何用dom4j将XML中的每&row&(行)读到一个IOFileRecord对象中?------解决方案--------------------/view/401b45efd3e197.html/hoojo/archive//2135743.htmlhttp://skyeywolf./blog/static//
------解决方案--------------------太容易了 得到所有的 ROW的集合 然后 在每个ROW里 循环找到 3个 FIELD 得到后整成这个实体类 把这些实体类 加入到 这个实体类的集合里去就好啦。DOM4J 很强大的
这个XML 最好还是优化一下 如Java code
&out-file&
&goods-id&110204&/field&
&amount&3&/field&
&total-sum&0&/field&
&/out-file&
------解决方案--------------------XML创建的格式不太好啊,取数据很麻烦,最好用下面格式,代码好写&row&
&goods-id&110204&/goods-id&
&amount&3&/amount&
&total-sum&0&/total-sum& &/row&
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分106 UID212354阅读权限10积分15帖子精华可用积分15 专家积分0 在线时间0 小时注册时间最后登录
白手起家, 积分 15, 距离下一级还需 185 积分
帖子主题精华可用积分15 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
10可用积分
网上的一些资料表明使用Expat或者LibXml的库对中文的支持都不太好,需要转码,可能会影响效率。
TinyXml看似可以解决中文问题,不过是用DOM方式的解析(效率可能不如SAX方式高)
请做过的高手讲一下Linux下C解析XML可行性如何?可行/效率/稳定?
[ 本帖最后由 hareqiqi 于
14:50 编辑 ]
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
快乐就常有,好景真永在
空间积分802 信誉积分898 UID82215阅读权限100积分41223帖子精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
帖子主题精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
论坛徽章:1
原帖由 hareqiqi 于
14:44 发表于 1楼&&
网上的一些资料表明使用Expat或者LibXml的库对中文的支持都不太好,需要转码,可能会影响效率。
TinyXml看似可以解决中文问题,不过是用DOM方式的解析(效率可能不如SAX方式高)
  你所有的数据如果是UTF-8的,那么就不需要任何转码工作。
  如果你又不想转码,那么就让你的数据是UTF-8的吧。
经过不断的接触,发现LibXML2自身已经支持了中文编码.只是他的所有api处理的数据都是UTF-8类型的,所以只要在读入和写入数据时进行相应转换即可!而且libxml2已融合了iconv,以下是代码!flags标示是读入(0)还是写入(1)!已测试通过
uint8_t *convert(uint8_t *in, char *encoding, uint8_t flags)
{
& & uint8_t *
& & int ret, size, out_size,
& & xmlCharEncodingHandlerP
& & size = (int) strlen( (char*)in ) + 1;
& & out_size = size * 2 - 1;
& & out = (uint8_t *)malloc((size_t) out_size);
& & if (out) {
& && &&&handler = xmlFindCharEncodingHandler(encoding);
& && &&&if (!handler) {
& && && && &free(out);
& && && && &out = NULL;
& && &&&}
& & }
& & if (out) {
& && &&&temp = size - 1;
& && &&&if ( flags ) {
& && && && &ret = handler-&input(out, &out_size, in, &temp);
& && &&&}else {
& && && && &ret = handler-&output(out, &out_size, in, &temp);
& && &&&}
& && &&&if (ret || temp - size + 1) {
& && && && &if (ret) {
& && && && && & printf(&conversion wasn't successful.\n&);
& && && && &} else {
& && && && && & printf(&conversion wasn't successful. converted: &);
& && && && &}
& && && && &free(out);
& && && && &out = NULL;
& && &&&} else {
& && && && &out =(uint8_t *) realloc(out, out_size + 1);
& && && && &out[out_size] = 0;&&/*null terminating out */
& && &&&}
& & } else {
& && &&&printf(&no mem\n&);
& & }
& & return (out);
}
int main(int argc, char **argv)
{
& & uint8_t *content, *out, *
& & xmlDocP
& & xmlNodeP
& & char *encoding = &ISO-8859-1&;
& & //char *encoding = &utf-8&;
& & if (argc &= 1) {
& && &&&printf(&Usage: %s content\n&, argv[0]);
& && &&&return (0);
& & }
& & content = (uint8_t *)argv[1];
& & out = convert(content, encoding, 1);
& & in = convert( out, encoding, 0 );
& & doc = xmlNewDoc( (xmlChar*)&1.0& );
& & printf( &%s:%s\n&, encoding, out&&);
& & printf( &%s:%s\n&, encoding, in&&);
& & rootnode = xmlNewDocNode(doc, NULL, (const xmlChar *) &root&, out);
& & xmlDocSetRootElement(doc, rootnode);
& & xmlSaveFormatFileEnc(&-&, doc, encoding, 1);
& & free( out );
& & free( in );
& & return (1);
}复制代码
=========================
=========================
快乐就常有,好景真永在
空间积分802 信誉积分898 UID82215阅读权限100积分41223帖子精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
帖子主题精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
论坛徽章:1
请做过的高手讲一下Linux下C解析XML可行性如何?可行/效率/稳定?
完全可行,效率很好,稳定性很好。
=========================
=========================
空间积分0 信誉积分106 UID212354阅读权限10积分15帖子精华可用积分15 专家积分0 在线时间0 小时注册时间最后登录
白手起家, 积分 15, 距离下一级还需 185 积分
帖子主题精华可用积分15 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
再问个问题
我要修改xml节点的某个值为汉字是不是先要转换
中提到的:
szNode = Convert(&gb2312&, &utf-8&, &测试& );
取出来的时候要相反的转换。
这样做频繁的转换效率会不会很低。
空间积分0 信誉积分106 UID212354阅读权限10积分15帖子精华可用积分15 专家积分0 在线时间0 小时注册时间最后登录
白手起家, 积分 15, 距离下一级还需 185 积分
帖子主题精华可用积分15 专家积分0 在线时间0 小时注册时间最后登录
论坛徽章:0
可不可以将XMLDoc直接传输而不生成文件
可不可以将XMLDoc直接传输而不生成文件
因为我是想根据发送过来的数据生成XML消息来进行传输的。
另外Windows端接收到该消息解析应该也没有问题吧
快乐就常有,好景真永在
空间积分802 信誉积分898 UID82215阅读权限100积分41223帖子精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
帖子主题精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
论坛徽章:1
原帖由 hareqiqi 于
16:55 发表于 5楼&&
可不可以将XMLDoc直接传输而不生成文件
因为我是想根据发送过来的数据生成XML消息来进行传输的。
另外Windows端接收到该消息解析应该也没有问题吧
完全可以直接输出的啊,和普通的http的html输出类似。
=========================
=========================
快乐就常有,好景真永在
空间积分802 信誉积分898 UID82215阅读权限100积分41223帖子精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
帖子主题精华可用积分41223 专家积分1143 在线时间821 小时注册时间最后登录
论坛徽章:1
原帖由 hareqiqi 于
16:51 发表于 4楼&&
我要修改xml节点的某个值为汉字是不是先要转换
中提到的:
szNode = Convert(&gb2312&, &utf-8&, &测试& ...
最好的方法,是你的整个系统采用UTF-8。
=========================
=========================
空间积分0 信誉积分105 UID阅读权限30积分1008帖子精华可用积分1008 专家积分23 在线时间39 小时注册时间最后登录
家境小康, 积分 1008, 距离下一级还需 992 积分
帖子主题精华可用积分1008 专家积分23 在线时间39 小时注册时间最后登录
论坛徽章:0
我用过LIBXML2编解码,在处理中文字符时,是事先将要加为节点的文本进行base64编码,base64编解码比较简单,结合LIBXML2使用感觉效果稳定性都不错
注:我是在电信行业短信操作时用的.建议楼主可试着用一下,编码后的XML文档可直接拿到JAVA里边的工具解码.
空间积分0 信誉积分125 UID阅读权限20积分484帖子精华可用积分484 专家积分10 在线时间25 小时注册时间最后登录
稍有积蓄, 积分 484, 距离下一级还需 16 积分
帖子主题精华可用积分484 专家积分10 在线时间25 小时注册时间最后登录
论坛徽章:0
回复 #1 hareqiqi 的帖子
我这里有一份关于LINUX下的LINXML的应用,是关于LINUX下C中对XML的操作,要的话,给我你的邮箱
空间积分0 信誉积分104 UID77485阅读权限30积分1178帖子精华可用积分1178 专家积分10 在线时间232 小时注册时间最后登录
家境小康, 积分 1178, 距离下一级还需 822 积分
帖子主题精华可用积分1178 专家积分10 在线时间232 小时注册时间最后登录
论坛徽章:0
回复 #9 wafeffcs 的帖子
方便的话,也请给我一份
如果靓仔是一种罪,那我已经罪犯滔天;
如果有型是一种错,那我已经一错再错;
如果聪明要受惩罚,那我岂不是要千刀万剐?!
如果谦虚都要受折磨,我又怎能逃得过?!
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分302 UID阅读权限10积分27帖子精华可用积分27 专家积分0 在线时间86 小时注册时间最后登录
白手起家, 积分 27, 距离下一级还需 173 积分
帖子主题精华可用积分27 专家积分0 在线时间86 小时注册时间最后登录
论坛徽章:0
需要解析的源文件:
/tmp/cameralist :
&?xml version=&1.0& encoding=&UTF-8&?&
&cameralist&
&&&camera brand=&virtual camera& ip=&192.168.1.17& mac=&& hasAudio=&no& hasVideo=&yes&&
& & &url codec=&m4v&&rtsp://192.168.1.17:5554/ipcam1.m4v&/url&
&&&/camera&
想要获取IP的值:
grep -Eo &ip=/&[^ ]+/&& /tmp/cameralist | awk -F/& '{print $2}'
想问一下这里哪里出错了,该怎么写! 谢谢~~
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分5 信誉积分1034 UID666268阅读权限90积分35902帖子精华可用积分35904 专家积分857 在线时间5527 小时注册时间最后登录
巨富豪门, 积分 35902, 距离下一级还需 4098 积分
帖子主题精华可用积分35904 专家积分857 在线时间5527 小时注册时间最后登录
认证徽章论坛徽章:16
hyh717 grep -Po '(?&=ip=&)[^&]+' /tmp/cameralist复制代码
记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
空间积分0 信誉积分302 UID阅读权限10积分27帖子精华可用积分27 专家积分0 在线时间86 小时注册时间最后登录
白手起家, 积分 27, 距离下一级还需 173 积分
帖子主题精华可用积分27 专家积分0 在线时间86 小时注册时间最后登录
论坛徽章:0
搞定,谢谢··
空间积分0 信誉积分348 UID阅读权限70积分6625帖子精华可用积分6625 专家积分0 在线时间247 小时注册时间最后登录
富足长乐, 积分 6625, 距离下一级还需 1375 积分
帖子主题精华可用积分6625 专家积分0 在线时间247 小时注册时间最后登录
认证徽章论坛徽章:2
hyh717 awk -vRS='[ \n]' -vFS='&' '/ip=/{print $2}' file复制代码
空间积分860 信誉积分2887 UID阅读权限100积分48107帖子精华可用积分48107 专家积分105 在线时间11653 小时注册时间最后登录
帖子主题精华可用积分48107 专家积分105 在线时间11653 小时注册时间最后登录
认证徽章论坛徽章:62
sed -r '/ ip=/!d; s/.* ip=&([^&]+)&.*/\1/' /tmp/cameralist复制代码
【图书免费赠送】
【Windows批处理】
空间积分0 信誉积分322 UID阅读权限50积分2046帖子精华可用积分2046 专家积分0 在线时间208 小时注册时间最后登录
小富即安, 积分 2046, 距离下一级还需 2954 积分
帖子主题精华可用积分2046 专家积分0 在线时间208 小时注册时间最后登录
认证徽章论坛徽章:3
学生党:飘过~python试试....谢谢让我明白了re正则的东西~#!/usr/bin/env python
# -*- coding: gbk -*-
&like grep&
import sys,re
import linecache as lc
pile(r'(?&=ip=&)[^&]+')
for line in lc.getlines(sys.argv[1]):
& && &&&if re.search(pattern,line):
& && && && && & print re.findall(pattern,line)[0]复制代码测试:
$ ./yhsafe.py yhsafe.txt
192.168.1.17
君子博學而日參省乎己,則知明而行無過矣.&&--BY: 白头发
空间积分0 信誉积分2279 UID阅读权限90积分8685帖子精华可用积分8685 专家积分0 在线时间3019 小时注册时间最后登录
腰缠万贯, 积分 8685, 距离下一级还需 1315 积分
帖子主题精华可用积分8685 专家积分0 在线时间3019 小时注册时间最后登录
认证徽章论坛徽章:18
李满满 python -c &print '\n'.join(re.findall('ip=\&(.*?)\&',open('file').read()))&复制代码这样就O啦,发神.
Bash/Awk/Sed CU联盟: 各路大神专治疑难杂症
Let's Python:
空间积分0 信誉积分322 UID阅读权限50积分2046帖子精华可用积分2046 专家积分0 在线时间208 小时注册时间最后登录
小富即安, 积分 2046, 距离下一级还需 2954 积分
帖子主题精华可用积分2046 专家积分0 在线时间208 小时注册时间最后登录
认证徽章论坛徽章:3
一招流~师傅好厉害~.read()默认读取全部~好好这个方法更适合findall函数回复
君子博學而日參省乎己,則知明而行無過矣.&&--BY: 白头发
空间积分0 信誉积分1429 UID阅读权限30积分1702帖子精华可用积分1704 专家积分0 在线时间1731 小时注册时间最后登录
家境小康, 积分 1702, 距离下一级还需 298 积分
帖子主题精华可用积分1704 专家积分0 在线时间1731 小时注册时间最后登录
论坛徽章:7
&?php
preg_match('/.*ip=&([^&]+)&.*/', file_get_contents('200.txt'),$matchs);
echo $matchs[1];
?&
192.168.1.17复制代码
走入程序猿的世界。
(python每日一练)
空间积分0 信誉积分946 UID阅读权限30积分1423帖子精华可用积分1423 专家积分0 在线时间906 小时注册时间最后登录
家境小康, 积分 1423, 距离下一级还需 577 积分
帖子主题精华可用积分1423 专家积分0 在线时间906 小时注册时间最后登录
认证徽章论坛徽章:7
grep赞一个
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 追问问题背后的问题是 的文章

 

随机推荐