Java中的XML之与HTML的区别验证,定位信息,命名空间

2018-07-31  本文已影响0人  pinnuli

HTML与XML的区别


验证XML文档

需要指定文档结构时,可以提供一个文档类型定义(DTD)或XML Schema

文档类型定义

<?xml version="1.0"?>
<!DOCTYPE configuration[

    <!ELEMENT configuration...>
    ...
]>
<configuration>
...
</configuration>

这些规则被纳入到DOCTYPE声明中,代码块[...]用来限定其界限,比如configuration

<!DOCTYPE configuration SYSTEM "config.dtd">
<!DOCTYPE configuration SYSTEM "http://myserver.com/config.dtd">
class MyEntityResolver implements EntityResolver{
    public InputSource resolveEntity(String publicId, String systemID){
        if(publicID.equals(a knowx ID)){
            return new InputSource(DTD data):
        }else{
            return null;
        }
    }
}

PS:具体的类型规则看文档,注意在设计DTD时应该要么只包含文本,要么包含其他元素,避免解析混合式(标签和文本的混合)内容时空

XML Schema

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</project>
<xsd:element name="name" type="xsd:string"/>
- ref属性引用Schema中位于别处的定义
<xsd:element ref="name"/>
<xsd:element name="style" type=StyleType"/>
    <xsd:restriction base="xsd:string"/>
        <xsd:enumeration value="PLAIN"/>
    </xsd:restriction>
</xsd:element>

使用XPath定位信息

<configfuration>
    <database>
        <username id="test">pinnuli</username>
        <password>123456</password>
    </database>
</configfuration>
XPathFactory xpFactory = XPathFactory.newInstance();
path = xpfactory.newXPath();
String username = path.evaluate(/configuration/database/username",doc);

具体的语法看文档


XML的命名空间

<element xmlns="namespaceURI1">
    <child xmlns="namespaceURI2">
        grandchildren
    </child>
</element>
>这里第一个子元素和孙元素都是第二个命名空间的一部分
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="pinnuli" type="haha"/>
    ...
</xsd:schema>
>在这里xsd:schema实际上指的是命名空间`http://www.w3.org/2001/XMLSchema`中的`schema`
factory.serNamespaceAware(true);

参阅:
慕课网:Java眼中的XML---文件读取

java核心技术 卷II:高级特性

上一篇 下一篇

猜你喜欢

热点阅读