XML::简单地忽略emdash标签?
我正在使用 XML Simple 来解析 XML 文件,有问题的部分如下所示:
<textBody>
<title>
<titlePart>
<text>SECTION A <emdash/> HUMAN NECESSITIES</text>
</titlePart>
</title>
</textBody>
<ipcEntry kind="t" symbol="A01" ipcLevel="C" entryType="K" lang="EN">
<textBody>
<title>
<titlePart>
<text>AGRICULTURE</text>
</titlePart>
</title>
</textBody>
</ipcEntry
由于某种原因 XML::Simple 完全忽略了
我猜是因为 emdash 标签,因为
解析得很好。
我还尝试通过以下方式设置解析器:
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
仍然不行。 有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
具有值同时包含文本和其他标签的标签称为“混合内容”。 XML::Simple 不处理混合内容(无论如何都没有用)。在 XML::Simple 的宇宙观中,标签可以包含文本或其他标签,但不能同时包含两者。这就是为什么它被称为“简单”。引用其文档:
您必须选择不同的 XML 模块。 XML::LibXML 和 XML::Twig 是流行的选择。
另一种可能性是让生成 XML 的人使用实体而不是标签来表示破折号等字符。例如,XML::Simple 可以处理:
就好了。 (
—
是一个破折号。)Having a tag whose value includes both text and other tags is called "mixed content". XML::Simple doesn't handle mixed content (not usefully, anyway). In XML::Simple's view of the universe, a tag can contain either text or other tags, not both. That's why it's called "Simple". To quote its docs:
You'll have to pick a different XML module. XML::LibXML and XML::Twig are popular choices.
Another possibility would be to get whoever produced the XML to use entities instead of tags to represent characters like a dash. For example, XML::Simple could handle:
just fine. (
—
is an em dash.)XML::Simple
正在解析所有内容,但它不能很好地处理来自 精美手册:例如,这个:
Yields:
所以破折号在那里,但混合内容相当混乱。
XML::Simple
is parsing it all but it doesn't handle mixed content that well, from the fine manual:For example, this:
Yields:
So the emdash is there but the mixed content is rather mixed up.