java xml 写了一段代码 属性里的默认值出不来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java xml 写了一段代码 属性里的默认值出不来相关的知识,希望对你有一定的参考价值。

dtd文件

<?xml version="1.0" encoding="GBK"?>
<!ELEMENT 书籍列表 (计算机书籍)* >
<!ELEMENT 计算机书籍 ((书名, 价格)+, 作者+, 性别?, (电话|地址), 简介, hr) >
<!ELEMENT 书名 (#PCDATA) >
<!ELEMENT 价格 (#PCDATA) >
<!ELEMENT 作者 (#PCDATA) >
<!ELEMENT 电话 (#PCDATA) >
<!ELEMENT 地址 (#PCDATA) >
<!ELEMENT 性别 (#PCDATA) >
<!ELEMENT 简介 (#PCDATA) >
<!ELEMENT hr EMPTY>
<!ATTLIST 作者
性别 (男 | 女) "男"
年龄 CDATA #IMPLIED
联系电话 CDATA #REQUIRED
职务 CDATA #FIXED "作家"
个人爱好 CDATA "聊天"
>

xml文件

<?xml version="1.0" encoding="gbk" ?>
<!DOCTYPE 书籍列表 SYSTEM "book.dtd">
<书籍列表>
<计算机书籍>
<书名>db2调优</书名>
<价格>53.00</价格>
<书名>db2大全</书名>
<价格>58.00</价格>
<作者 联系电话="12343" 个人爱好="数据库">牛新庄</作者>
<电话>1122</电话>
<简介><![CDATA[一本<XML>好书]]></简介>
<hr/>
</计算机书籍>
<计算机书籍>
<书名>xml前世今生</书名>
<价格>55.00</价格>
<作者 联系电话="34343434" >汤雨祥</作者>
<作者 联系电话="343434344">鲁迅</作者>
<电话>1122434</电话>
<简介><![CDATA[一本<XML>好书]]></简介>
<hr></hr>
</计算机书籍>
<计算机书籍>
<书名>thinking in java</书名>
<价格>45.00</价格>
<作者 联系电话="3434344">陶为</作者>
<性别>男</性别>
<地址>南京</地址>
<简介>java编程思想</简介>
<hr></hr>
</计算机书籍>
</书籍列表>

浏览器运行结果

dtd里写的所有的属性的默认值 都不显示 怎么回事
2张图片
”男“ 和”简介“ 后面的不是| 是鼠标

这是XML方面的问题,其实和java没什么关系吧。


首先说,浏览器里只是显示XML的代码,XML怎么写就怎么显示,不会自动添上DTD里面规定的默认值。

其次,DTD里面的默认值是为了XML书写简便,在XML文件中缺省时,解析器也可以找到其默认值。解析器指的是XMLDOM,而不是浏览器。


给你个例子吧,还是你的DTD和XML,我在C#里面用MSXMLDOM解析,获取第一本计算机书籍的作者属性中的性别和职务,虽然XML中没有写明,但是我依然得到了默认值:


上面是C#代码,下面是运行时得到的变量值。我不写java,只能给你看C#程序。

参考技术A 上次我也有这个问题,搞了半天也没有解决,最后我删了从新写了一下就好了,我也不知道为什么。。抱歉!

[Shell编程]写了一段shell代码,运行发现代码块(标红的)执行的预期结果出不来,谁能帮我看看?

【原代码】

Mem_Usage=91.00

CPU_Usage=85.00

if [[ `expr $Mem_Usage > 90.00` -eq 1 ]];then
    echo "Memory highly used! "
elif [[ `expr $CPU_Usage > 80.00` -eq 1 ]];then
    echo "CPU highly used! "
elif [[ `expr $Mem_Usage > 90.00` -eq 1 ]] && [[ `expr $CPU_Usage > 80.00` -eq 1 ]];then 
    echo "Memory && CPU highly used!"
else
    echo "Memory && CPU used normal!"
fi

调试运行结果:错误

# sh -x test.sh
+ Mem_Usage=91.00
+ CPU_Usage=95.00
++ expr 91.00 ‘>‘ 90.00
+ [[ 1 -eq 1 ]]
+ echo ‘Memory highly used! ‘
Memory highly used!

------------------------------------------------------------------我是可爱的分割线-------------------------------------------------------------

【修改后的代码】

Mem_Usage=91.00
CPU_Usage=85.00
if [ `expr $Mem_Usage > 90.00` -eq 1 ]  &&  [[ `expr $CPU_Usage > 80.00` -eq 1 ];then
    echo "Memory && CPU highly used!"
elif [ `expr $CPU_Usage > 80.00` -eq 1 ];then
    echo "CPU highly used! "
elif [ `expr $Mem_Usage > 90.00` -eq 1 ];then
    echo "Memory highly used! "
else
    echo "Memory && CPU used normal!"
fi

调试结果输出:正确

# sh -x test.sh
+ Mem_Usage=91.00
+ CPU_Usage=95.00
++ expr 91.00 ‘>‘ 90.00
+ [[ 1 -eq 1 ]]
++ expr 95.00 ‘>‘ 80.00
+ [[ 1 -eq 1 ]]
+ echo ‘Memory && CPU highly used!‘
Memory && CPU highly used!

 

以上是关于java xml 写了一段代码 属性里的默认值出不来的主要内容,如果未能解决你的问题,请参考以下文章

[Shell编程]写了一段shell代码,运行发现代码块(标红的)执行的预期结果出不来,谁能帮我看看?

java 代码实现复制粘粘功能,详细细节如图,我自己写了一段代码,搞了半天没搞好。

我写了一段存储过程 是SQLSERVER的代码如下:

用新学的知识 写了一段小代码

写了一段java程序,编译时提示找不到符号,请问该怎么修改

C# 无意间写了一段线程死锁的代码