我正在开发一个项目来创建一个解析器,该解析器采用存储在 XML 中的教科书并使用 PHP 将它们转换为 HTML。这是用于在线教育服务。我花了很多时间研究 PHP 中的 XML 解析器选项。从我所见,我相信我最好的选择是使用 DOMDocument 或 XMLReader(也许将它与 SimpleXML 混合)。
这些书被分成单独的文件,分别为 Front、Units、Chapter 和 Back。这是从外部源提供的,因此我无法控制 XML。话虽如此,我发现他们正在使用Syntext Serna Free来构建 XML 文档。
因此书籍以 ISBN# 命名,文件格式为 1234567890_ch01.xml。这是 XML 文档的一个示例。这是高度浓缩的可读性,因为实际文档是每个文档 700-1000 行,每个教科书大约 25 个文档。
<frontmatter id="1234567890_001_000003" page-num="i" filename="1234567890_001_fm01.xml" sourcefilename="prelims.pdf">
<titleinfo id="1234567890_001_000004" page-num="i">
<title id="1234567890_001_000005" page-num="i">I'm a Book Title</title>
<subtitle id="1234567890_001_000006" page-num="i">I'm a subtitle</subtitle>
</titleinfo>
<creditinfo id="1234567890_001_000007" page-num="i">
<author id="1234567890_001_000008" page-num="i">
<name><emph type="bold">Senior Author</emph>
<fname><emph type="bold">Bob</emph></fname>
<lname><emph type="bold">Loblaw</emph></lname>
</name>
<organizationname>District School Board</organizationname>
</author>
<author id="1234567890_001_000009" page-num="i">
<name><emph type="bold">Authors</emph>
<fname><emph type="bold">Spongebob</emph></fname>
<lname><emph type="bold">Squarepants</emph></lname>
</name>
<organizationname>District School Board</organizationname>
</author>
</creditinfo>
</frontmatter>
所以这是布局的基本思想。当然,它还有很多内容,但本质上它都是按父标签排序的。我在想我的策略是制作一个父标签列表,使用 SAX 解析器读取这些标签,然后将子标签转换为 SimpleXML 对象以便于使用。本质上保持相同的 XML 结构,但将其包装在 HTML 元素中,并将 XML 元素名称作为类或 id 名称,并将 XML 属性直接转换为 HTML 属性。
呸。好的,所以我的问题是……有没有人可以分享一些知识或经验来解析这种大小/复杂性的 XML 文档?对于这种规模的东西,推荐的策略是什么?