免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5333 | 回复: 12
打印 上一主题 下一主题

xml贪婪性的问题 [复制链接]

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-10 14:28 |只看该作者 |倒序浏览
本帖最后由 wiliiwin 于 2014-11-10 16:24 编辑
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schem
  4. a/p"
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/sche
  6. ma/beans/spring-beans-3.0.xsd">
  7. <bean id="oracleProxyInsertCFL" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">  
  8.    <property name="serviceUrl">
  9.         <value>
  10.           http://192.168.100.15:8080/OracleProxy/remoting/persistent
  11.         </value>
  12.    </property>  
  13.   <property name="serviceInterface">
  14.       <value>com.yeepay.proxy.servlet.IProxyServlet</value>
  15.    </property>
  16. </bean>
  17. <bean id="oracleProxySelect" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">  
  18.    <property name="serviceUrl">
  19.       <value>
  20.         http://192.168.100.15:8080/OracleProxy/remoting/oracleProxyInstance
  21.       </value>  
  22.    </property>  
  23.    <property name="serviceInterface">  
  24.      <value>com.yeepay.proxy.cash.webservice.CashOracleProxy</value>
  25.    </property>  
  26. </bean>
  27. <bean id="bankReportNotifyFacadeImpl" class="org.springframework.remoting.caucho.HessianProxyFactoryBea
  28. n">  
  29.    <property name="serviceUrl">
  30.       <value>
  31.                 http://50.1.1.9:8026/bankreport-hessian/hessian/BankReportNotifyFacade
  32.       </value>  
  33.   
  34.    </property>  
  35.   <property name="serviceInterface">  
  36.     <value>com.yeepay.g3.bank.report.facade.BankReportNotifyFacade</value>  
  37.    </property>  
  38. </bean>         
  39. </beans>
复制代码
需要提取bean id为oracleProxyInsertCFL和 property name为serviceUrl的vlaues值,但是这里面牵扯到贪婪性的问题,自己写的代码一直解决不了这个问题,所以请求大家来看下怎么解决这个问题,别用xml模块,就纯靠perl的知识来解决,谢谢大家了


我的代码如下:
  1. #!/usr/bin/perl
  2. $/ = undef;
  3. open(FILE,"1.xml");
  4. my $file=<FILE>;
  5. if($file =~ /<bean id="([A-Za-z]*?)".*>[\s]+?<property name="([A-Za-z]*?)">[\s]+?<value>(.*)<\/value>[\
  6. s]+?<\/property>/msg)
  7. {
  8.       printf "$1\n";
  9.       printf "$2\n";
  10.       printf "$3\n";
  11. }
复制代码
匹配的是
  1. # 2.pl
  2. oracleProxyInsertCFL
  3. serviceInterface
  4. com.yeepay.g3.bank.report.facade.BankReportNotifyFacade
复制代码
为什么这里会贪婪了呢?实在想不通啊

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [报告]
发表于 2014-11-10 15:54 |只看该作者
  1. perl -lne 'BEGIN{$/=""};print $1 if /<bean\s+id=\"oracleProxyInsertCFL\"[\s\S]+?name=\"serviceUrl\"[\s\S]+?<value>\s+(\S+)\s+<\/value>/'  tmp

  2. http://192.168.100.15:8080/OracleProxy/remoting/persistent
复制代码
回复 1# wiliiwin


   

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
3 [报告]
发表于 2014-11-10 16:26 |只看该作者
回复 2# mcshell
多谢,麻烦下 你帮我看下我写的为什么会贪婪呢,搞不清楚了

   

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
4 [报告]
发表于 2014-11-10 16:41 |只看该作者
回复 3# wiliiwin


    指定你需要匹配的名称

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
5 [报告]
发表于 2014-11-10 17:05 |只看该作者
知道啥原因,正则用的不是不行,继续努力

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2014-11-11 07:17 |只看该作者
LZ怎么定义“纯靠perl的知识”?用 Perl 写的模块就不是Perl的知识了?
用正则表达式处理XML是错误的。你解决的只是你眼前看到的这个block,稍微变化的XML你的正则表达式可能就不适用了,而且这个适用范围还是未知的。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-11-11 09:10 |只看该作者
既然你已经指定了要提取的对应模块,那就应该把条件加上啦~

论坛徽章:
8
戌狗
日期:2014-09-26 16:39:44水瓶座
日期:2014-10-10 02:06:57金牛座
日期:2014-10-11 23:04:042015亚冠之首尔
日期:2015-06-23 15:37:0015-16赛季CBA联赛之天津
日期:2016-01-22 18:58:2915-16赛季CBA联赛之佛山
日期:2016-05-31 19:18:0815-16赛季CBA联赛之同曦
日期:2016-08-10 16:26:3315-16赛季CBA联赛之辽宁
日期:2018-01-10 11:47:40
8 [报告]
发表于 2014-11-11 11:39 |只看该作者
回复 6# py
我才学 为了熟练perl的基本知识,因此不要用模块,要是基础扎实了,当然会用模块的

   

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2014-11-12 08:44 |只看该作者
wiliiwin 发表于 2014-11-11 11:39
回复 6# py
我才学 为了熟练perl的基本知识,因此不要用模块,要是基础扎实了,当然会用模块的


你这个逻辑是错误的,学会选择正确的工具完成任务才是需要学习的。
就像用勺子盛汤,而你为了学习使用筷子,非要用筷子去盛汤。达不到你想要的效果是其次,最后不但不知道勺子该怎么用,筷子也不知道该用在何处。

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
10 [报告]
发表于 2014-11-12 11:17 |只看该作者
你这个逻辑是正确的,学会选择正确的,
py 是我的師傅,我學到非常多,但他錯了,

我的師傅告訴我,不要依赖模塊,
if you 依赖模塊 than you can't write any 模塊...

~~ {:2_172:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP