免费注册 查看新帖 |

Chinaunix

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

xml文件内容判断,请教高手 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-19 19:48 |只看该作者 |倒序浏览
本帖最后由 kevinwell 于 2010-09-19 19:55 编辑

好久不写了,手脚生疏,项目急需一个脚本,
1.打开文件读取内容,从开头读取,一直到读到<Attribute-Overrides>截止
2.如果文件中是:                  <Attribute name="db_redofile_members" type="integer" display-name="Number of Members" description="Number of members in the log group.">
                        <Attribute-Qualifiers/>
                </Attribute>

这样的,将文件中<Attribute-Qualifiers/>后面加上       
                                             <Attribute-Qualifier name="STATIC"/>
                                                                               </Attribute-Qualifiers>
最后文件变为
<Attribute name="db_redofile_members" type="integer" display-name="Number of Members" description="Number of members in the log group.">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="STATIC"/>
                        </Attribute-Qualifiers>
</Attribute>
3.如果文件中内容有这样的:
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>  #HIDDEN_ATTRIBUTE这个值是变量,有可能在不同文件中字数和内容不同
                        </Attribute-Qualifiers>
则在<Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>下面加一条        <Attribute-Qualifier name="STATIC"/>
即改为

        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>  
                                                              <Attribute-Qualifier name="STATIC"/>

                        </Attribute-Qualifiers>

,另外顺便请教下,哪位大侠知道bat能实现这样的功能么,谢谢

论坛徽章:
0
2 [报告]
发表于 2010-09-19 20:06 |只看该作者
回复 1# kevinwell


    你应该给个数据样本看看

论坛徽章:
0
3 [报告]
发表于 2010-09-19 20:09 |只看该作者
本帖最后由 kevinwell 于 2010-09-19 20:12 编辑

<?xml version="1.0" encoding="UTF-8"?>
<Class class-name="dbuser" display-name="DB User" description="This class represents a user in Database">
        <Class-Qualifiers>
                <Class-Qualifier name="DOCUMENTED"/>
        </Class-Qualifiers>
        <Class-Type>OBJECT</Class-Type>
        <Derived-From class-name="databaseresource"/>
        <Attributes>
                <Attribute name="dbuser_created" type="date" display-name="User Creation Date" description="User creation date.">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>
##这种情况要加入<Attribute-Qualifier name="STATIC"/>##
                        </Attribute-Qualifiers>
                </Attribute>
                <Attribute name="dbuser_defaulttablespace" type="string" display-name="Default TableSpace" description="DBUSER Default TableSpace" size="150">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>
##这种情况要加入<Attribute-Qualifier name="STATIC"/>##
                        </Attribute-Qualifiers>
                </Attribute>
                <Attribute name="dbuser_accountstatus" type="string" display-name="Account status" description="DBUSER Account status" size="150">
                        <Attribute-Qualifiers/>
##这种情况要加                        <Attribute-Qualifier name="STATIC"/>
###########                        </Attribute-Qualifiers>
#####################################
                </Attribute>
                <Attribute name="dbuser_temporarytablespace" type="string" display-name="Temporary TableSpace" description="DBUSER Temporary TableSpace" size="150">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>
                        </Attribute-Qualifiers>
                </Attribute>
        </Attributes>
        <Attribute-Overrides>   ###这个是结束读取的标志
                <Attribute-Override name="FAMILY_ICON">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>
                                <Attribute-Qualifier name="STATIC_ATTRIBUTE"/>
                        </Attribute-Qualifiers>
                        <Default-Value>db</Default-Value>
                </Attribute-Override>
                <Attribute-Override name="BODY_ICON">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>
                                <Attribute-Qualifier name="STATIC_ATTRIBUTE"/>
                        </Attribute-Qualifiers>
                        <Default-Value>dbuser</Default-Value>
                </Attribute-Override>
        </Attribute-Overrides>
        <Methods/>
</Class>

论坛徽章:
0
4 [报告]
发表于 2010-09-19 20:12 |只看该作者
回复 2# sunbw001


    给你样本了,请大侠指教

论坛徽章:
0
5 [报告]
发表于 2010-09-19 20:29 |只看该作者
回复 4# kevinwell
  1. sed '0,/<Attribute-Overrides>/{/<Attribute-Qualifiers>/{N;/<Attribute-Qualifier name=/{N;/<\/Attribute-Qualifiers>/{s#\(\n.[^\n]*\)$#\n<Attribute-Qualifier name="STATIC"\/>\1#}}}}' data
复制代码
你这个样本中只有第三种情况阿 我就解决第三种,你试试。

论坛徽章:
0
6 [报告]
发表于 2010-09-19 20:34 |只看该作者
本帖最后由 kevinwell 于 2010-09-19 20:42 编辑

回复 5# sunbw001


    怎么会呢,看看粗体的地方
<?xml version="1.0" encoding="UTF-8"?>
<Class class-name="dbuser" display-name="DB User" description="This class represents a user in Database">
        <Class-Qualifiers>
                <Class-Qualifier name="DOCUMENTED"/>
        </Class-Qualifiers>
        <Class-Type>OBJECT</Class-Type>
        <Derived-From class-name="databaseresource"/>
        <Attributes>
                <Attribute name="dbuser_created" type="date" display-name="User Creation Date" description="User creation date.">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>
                        </Attribute-Qualifiers>
                </Attribute>
                <Attribute name="dbuser_defaulttablespace" type="string" display-name="Default TableSpace" description="DBUSER Default TableSpace" size="150">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>
                        </Attribute-Qualifiers>

                </Attribute>
                <Attribute name="dbuser_accountstatus" type="string" display-name="Account status" description="DBUSER Account status" size="150">
                        <Attribute-Qualifiers/>
                </Attribute>
                <Attribute name="dbuser_temporarytablespace" type="string" display-name="Temporary TableSpace" description="DBUSER Temporary TableSpace" size="150">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>
                        </Attribute-Qualifiers>
                </Attribute>
        </Attributes>
        <Attribute-Overrides>
                <Attribute-Override name="FAMILY_ICON">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>
                                <Attribute-Qualifier name="STATIC_ATTRIBUTE"/>
                        </Attribute-Qualifiers>
                        <Default-Value>db</Default-Value>
                </Attribute-Override>
                <Attribute-Override name="BODY_ICON">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="HIDDEN_ATTRIBUTE"/>
                                <Attribute-Qualifier name="STATIC_ATTRIBUTE"/>
                        </Attribute-Qualifiers>
                        <Default-Value>dbuser</Default-Value>
                </Attribute-Override>
        </Attribute-Overrides>
        <Methods/>
</Class>

论坛徽章:
0
7 [报告]
发表于 2010-09-19 20:35 |只看该作者
<Attribute name="dbuser_defaulttablespace" type="string" display-name="Default TableSpace" description="DBUSER Default TableSpace" size="150">
                        <Attribute-Qualifiers>
                                <Attribute-Qualifier name="DOCUMENTED"/>

                        </Attribute-Qualifiers>
这个地方要在 </Attribute-Qualifiers>前面加一个        <Attribute-Qualifier name="STATIC"/>

论坛徽章:
0
8 [报告]
发表于 2010-09-19 20:37 |只看该作者
<Attribute name="dbuser_accountstatus" type="string" display-name="Account status" description="DBUSER Account status" size="150">
                        <Attribute-Qualifiers/>
                </Attribute>
这个地方要在<Attribute-Qualifiers/>后面加上
<Attribute-Qualifier name="STATIC"/>
                        </Attribute-Qualifiers>

论坛徽章:
0
9 [报告]
发表于 2010-09-19 20:52 |只看该作者
回复 8# kevinwell
  1. sed '0,/<Attribute-Overrides>/{/<Attribute-Qualifiers>/{N;/<Attribute-Qualifier name=/{N;/<\/Attribute-Qualifiers>/{s#\(\n.[^\n]*\)$#\n<Attribute-Qualifier name="STATIC"\/>\1#}}}}' data|sed '0,/<Attribute-Overrides>/{/<Attribute name=/{N;/<Attribute-Qualifiers\/>/{N;/<\/Attribute>/{s#\(\n.[^\n]*\)$#\n<Attribute-Qualifier name="STATIC"\/>\n<\/Attribute-Qualifiers>\1#}}}}'
复制代码
试试。

论坛徽章:
0
10 [报告]
发表于 2010-09-19 21:03 |只看该作者
谢谢,我去试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP