sno*_*kin 3 xml perl xml-simple
我正在使用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
Run Code Online (Sandbox Code Playgroud)
出于某种原因,XML :: Simple完全忽略了<text>SECTION A <emdash/> HUMAN NECESSITIES</text>
我猜它因为emdash标签,因为<text>AGRICULTURE</text>解析得很好.我还尝试通过以下方式设置解析器:
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
Run Code Online (Sandbox Code Playgroud)
仍然没有去.任何的想法?
具有其值包括文本和其他标签的标签被称为"混合内容". XML :: Simple不处理混合内容(无论如何都没有用).在XML :: Simple的Universe视图中,标记可以包含文本或其他标记,而不是两者.这就是为什么它被称为"简单".引用其文档:
混合内容(包含文本内容和嵌套元素的元素)将不会以有用的方式表示 - 元素顺序和重要的空白将丢失.如果您需要处理混合内容,那么XML :: Simple不适合您的工作
您必须选择不同的XML模块. XML :: LibXML和XML :: Twig是流行的选择.
另一种可能性是让生成XML的人使用实体而不是标签来表示像破折号这样的字符.例如,XML :: Simple可以处理:
<text>SECTION A — HUMAN NECESSITIES</text>
Run Code Online (Sandbox Code Playgroud)
正好.(—是一个短跑.)