PHP DOM验证xml文档是否符合DTD验证

本文介绍了一个使用PHP来验证XML文档是否符合DTD定义的例子。通过DOMDocument类的方法和属性,实现了对note.xml文件的加载及验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


validate.php:

<?php
header("Content-Type:text/html;charset=utf-8");
$dom = new DOMDocument('1.0','utf-8');
//$dom->validateOnParse = true;  //(第一种方法通过属性验证)强制加载外部DTD(是否通过DTD文件验证xml文档,默认为false)

@$dom->load('note.xml');   //这个@表示会强制加载外部DTD文件。
if (@$dom->validate()) {  //(第二种方法通过方法验证)这个@表示屏蔽验证不通过时的提示信息。
	echo "yes";
} else {
	echo "no";
}

// $body = $dom->getElementsByTagName('body')->item(0);
// echo $body->nodeValue;
note.xml:
<?xml version = '1.0' encoding = 'utf-8'?>
<!DOCTYPE note SYSTEM 'note.dtd'>
<note>
	<to>明月</to>
	<from>清风</from>
	<heading>思念</heading>
	<body>
		月到<strong>中秋</strong>分外明,人到中秋倍无助
		%company;   <!--参数实体只能用于DTD内部-->
		&copyright;  <!--一般实体可以用于xml-->
	</body>
	<br/>
</note>
note.dtd:

<!ELEMENT note (to,from,heading,body,br,any)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA|strong)*>
<!ELEMENT strong (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT any ANY>

<!ENTITY % company '商务印书馆'>   <!--定义参数实体,参数实体只能在DTD中使用-->
<!ENTITY copyright "2015~2022 %company; 版权所有">   <!--定义一般实体,一般实体可以在xml中使用-->


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值