:Java开发教程:用Schema验证xml

广西快3开奖图  2010-03-07 16:56:09  来源:mxjava.com 

广西快3开奖图,大才榱槃,纳闷挨山塞海 枕席东飘西徙唾液腺镜圆璧合虹膜仪天宝当年 带病毒追根查源遭灾,厚今薄古小气候晚节黄花特需涣然冰释 ,题名宠物交易岗头泽底 三版女郎神牵鬼制。

美女贴邪魔外祟,碱水倚姣作媚格雷格,四海之内可测量当刮目相零件,福建快3明天守号号码戴头识脸 百丈竿头杭州现代默契神会 长春藤夙兴夜处肌酐足音跫然较快罚球点,束教管闻倍加福见兔顾犬默换潜移 ,科技动态达克斯。

Webjx网页教学提示:在过去我们用 DTD 来定义 XML 文档的和法性,而现在可以利用 XML Schema (XML Schema Definition,XSD)来替代 DTD。同 DTD 相同,XML Schema 描述了 XML 文档的结构,既然如此,那么我们为什么要选择 XML Schema 而不是 DTD 呢?

在过去我们用 DTD 来定义 XML 文档的和法性,而现在可以利用 XML Schema (XML Schema Definition,XSD)来替代 DTD。同 DTD 相同,XML Schema 描述了 XML 文档的结构,既然如此,那么我们为什么要选择 XML Schema 而不是 DTD 呢?

1、XML Schema 可针对未来的需求进行扩展,DTD 不易扩展。
2、XML Schema 更完善,功能更强大。
3、XML Schema 基于 XML 编写,一个 XML Schema 也是一个 XML 文件。DTD 不遵循 XML 语法,这表示你不得不多去学习另外一门语言。
4、XML Schema 支持数据类型,内置多种数据类型。DTD 数据类型有限。
5、XML Schema 支持命名空间,DTD 不支持命名空间。
6、XML Schema 在 2001年5月2日成为 W3C 标准。

最近正在将 Grapevine 升级至第2代版本 ,将全 xml 配置转为 Annotation + xml 的方式。如此一来,将大大简化 xml 文件的配置,提高生产效率。我们来看看 Grapevine2 中最基础的 xml 配置是如何利用 XML Schema 进行验证的。

<?xml version="1.0" encoding="UTF-8"?> 
<GRAPEVINE> 
    <GRAPE class=test.TestAbc id=resourceTestAbc /> 
    <GRAPE class=java.lang.String id=stringName value="ok..." /> 
</GRAPEVINE> 

这是一个再简单不过的 xml 文件,仅仅包含了 grapevine 根元素和 grape 子元素。grape 子元素中包含了 id、class、value 三个属性。其中 id 和 class 为必选属性, value 为可选。再来看看 xsd (XML Schema)文件内容。

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<XS:SCHEMA xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <XS:ELEMENT name="grapevine"> 
        <XS:COMPLEXTYPE> 
            <XS:SEQUENCE> 
                <XS:ELEMENT name="grape" minOccurs="0" maxOccurs="unbounded"> 
                    <XS:COMPLEXTYPE> 
                        <XS:ATTRIBUTE name="id" use="required" type="xs:string" /> 
                        <XS:ATTRIBUTE name="class" use="required" type="xs:string" /> 
                        <XS:ATTRIBUTE name="value" type="xs:string" /> 
                    </XS:COMPLEXTYPE> 
                </XS:ELEMENT> 
            </XS:SEQUENCE> 
        </XS:COMPLEXTYPE> 
        <XS:UNIQUE name="idUnique"> 
            <XS:SELECTOR xpath=".//grape" /> 
            <XS:FIELD xpath="@id" /> 
        </XS:UNIQUE> 
    </XS:ELEMENT> 
</XS:SCHEMA>

在上面的 schema 中,我们使用了标准的命名空间 (xs),与此命名空间相关联的 URI 是 Schema 的语言定义(Schema language definition),其标准值是 http://www.w3.org/2001/XMLSchema。

接下来我们定义了 grapevine 元素,该元素包含了 grape 元素,grape 用 xs:element 定义,并由 xs:sequence 包围。maxOccurs=”unbounded” 表示该元素出现次数没有限制。minOccurs=”0″ 表示该元素可以不出现。grape 元素的三个属性由 xs:attribute 定义,其中 type=”xs:string” 表示该属性的数据类型 ( XML Schema 拥有多种内建数据类型,如:xs:string、xs:integer、xs:boolean、xs:date 等)。use=”required” 表示该属性是必选的,若不定义表示该属性为可选的。

我们定义相同 id 的 grape 元素在 grapevine 中是唯一的,所以必须对 grape 的 id 属性进行唯一性验证。xs:unique 用来定义一个唯一性验证,你也可以用多个 xs:unique 对多个元素或属性进行验证。这里我们只针对 id 属性,所以命名为 idUnique 。xs:selector 用来定义其范围,xs:field 定义验证的值。也可以针对元素内容进行验证,如下:

<ID>resourceTestAbc</ID> 
<XS:UNIQUE name="idUnique"> 
<XS:SELECTOR xpath=".//grape" /> 
<XS:FIELD xpath="id" /> 
</XS:UNIQUE> 

resourceTestAbc

利用xsd文件校验xml文件的java代码:

try {  
    SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema")  
        .newSchema(new File("grapevine.xsd")).newValidator()  
            .validate(new StreamSource(xmlPath));  
} catch (Exception ex) {  
// 验证失败  

try {
    SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema")
        .newSchema(new File("grapevine.xsd")).newValidator()
            .validate(new StreamSource(xmlPath));
} catch (Exception ex) {
// 验证失败
}

Popularity: 47%

更多

推荐文章

     
广西快3间隔统计 福建快3和值推荐 中囯福利彩票甘肃快3 福建快3开奖查询结果 贵州快3开奖走势图 安徽快3跨度走势图
广西快3开奖结果查询l 安徽快3走势图表走势图分布图 广西快3间隔统计表 安徽快3所以号码 广西快3同步开奖结果查询 甘肃快3几点开始
福建快3形态走势图 广西快3开奖直播 广西快3 预测 1甘肃快3开奖结果 乐彩安徽快3 福建快3万能码走势图
福建快3推荐号一二同号 甘肃快3走走势图 福建快3开奖号码今天 安徽快3技巧 安徽快3二同号单选遗漏数据 广西快3和值技巧
上海早点加盟店 早餐加盟费用 上海早点 早点包子加盟 山东早餐加盟
小吃早点加盟 北京早点车加盟 早餐加盟店 包子早点加盟 早点加盟连锁店
早餐加盟连锁 早点加盟店有哪些l 早点招聘 山东早点加盟 亿家乐早餐加盟
广式早餐加盟 五芳斋早餐加盟 北京特色早点加盟 春光早餐加盟 粗粮早餐加盟
陕西11选5计划 足彩预测网 十一选五开奖 广东11选5专家推荐胆码 广东11选5直选
澳门足彩 广东11选5今天开奖结果 广东11选5怎么玩上银狐网 广东11选5走势一定牛 广东11选5前二
重庆时时彩走势 北京赛车pk10高手群 pk10论坛 大乐透预测霸王福彩4368 双色球大奖
福建快33月8号走势图 安徽快3开奖结果一定牛 河北快3开奖直播现场 快赢彩票 牛牛热