目前,这将是我工作的一个示例XML:我不想解析某些标签XML
<smsq>
<sms>
<id>96</id>
<to>03333560511</to>
<msg> danial says: hahaha <space> nothing.
</msg>
</sms>
</smsq>
现在,请注意,该标签可以包含其他标签(这不应该被解析),我必须为此做一个dtd。 DTD中是这样的:
<!DOCTYPE smsq [
<!ELEMENT sms (mID,to,msg,type)>
<!ELEMENT mID (#PCDATA)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT msg (CDATA)>
]>
但问题是,XML解析器还是那张在标签和说,标签应与标签关闭。我只是想从XML获取数据,我不想进一步解析msg。
请帮我解决问题,并告诉我这是否可以用DTD完成。
谢谢!
如果标签不是封闭的,它不是XML。为了使XML可用,它必须是*格式正确*和*有效*。每个XML解析器都必须*拒绝输入的XML,如果它不是格式良好的*,并且缺少结束标记意味着它确实没有良好的形式。这一般取决于XML的广泛适用性和可用性。 – Abel 2010-08-22 18:17:51
@Abel,它不一定是有效的可用。在很多情况下,格式良好就足够了。 – 2010-08-22 18:19:38
@Jon:这是非常真实的,但是如果存在DTD,就像在这种情况下一样,XML必须是有效的才能被解析。 //只检查:无效的XML必须报告为*错误*,但这些错误不是*致命错误*,因为格式良好,即解析可以继续。 – Abel 2010-08-22 18:24:28