问题背景:
我有一个包含大量目录、文件、附件和 JavaScript 的文件夹。有一个主核心文件由 ActiveX 处理以生成一个“JS 树”类型的结构,该结构在嵌套表之后由嵌套表组成。简而言之,这很糟糕。
我遇到的问题是将其加载到数据库中,以便他们可以将状态应用于相关内容。
解析 XML 文件对我来说不一定是个问题,但是让结构正确流动却是。该文件没有以逻辑方式嵌套,这有助于在数据库/文件系统中轻松创建结构。XML 文件由Structure
节点组成,这些节点包含有关该节点的一些信息以及文件系统中的任何相关内容。
我正在考虑将其加载到 MPTT 类型的结构中,但是在逻辑上将各种节点解析为由子/父关系组成的内容是我的绊脚石。以下是此 XML 文件的示例:
<Structure nodeid="9D565FD65DE9464EA36F005866DBF3AE" ParentID = "6EEB45ED97634C9BB2730D7713255673" IsAddOnNode="True" IsCoreNode = "0" >
<Name>POS specific remarks</Name>
<Sequence>1</Sequence>
<WBS>1.1.3.1</WBS>
<BackgroundColor>#80FF00</BackgroundColor>
<FontColor>Black</FontColor>
<Comments></Comments>
<References></References>
</Structure>
<Structure nodeid="A6F7E2F0728147BB88429545A6C490CA" ParentID = "B17AB99B64664624AAA41E220A9EAE59" IsAddOnNode="False" IsCoreNode = "0" >
<Name>Execution, Monitoring, and Controlling of Results</Name>
<Sequence>4</Sequence>
<WBS>1.1.4</WBS>
<BackgroundColor></BackgroundColor>
<FontColor>White</FontColor>
<Comments>
<Comment AddOnID = "53539AB26B50472CAA2DF4E428605C87" Version="0.2"></Comment>
</Comments>
<References></References>
</Structure>
<Structure nodeid="EFCCA56742074A2A859FD1C547850ABA" ParentID = "A6F7E2F0728147BB88429545A6C490CA" IsAddOnNode="False" IsCoreNode = "0" >
<Name>Project Performance Reports</Name>
<Sequence>1</Sequence>
<WBS>1.1.4.1</WBS>
<BackgroundColor></BackgroundColor>
<FontColor>White</FontColor>
<Comments></Comments>
<References></References>
</Structure>
当它被 ActiveX 解析时,结构(在左侧导航窗格中)像标准大纲或有序列表一样排列:
1. Project Preparation
1.1 Project Management
1.1.1 Phase Star-Up
1.1.1.1 Item 1
1.1.1.2 Item 2
1.1.1.3 Item 3
等等。据我所知,这些表示节或小节 (1.1.1.2) 的值存储在节点的WBS
标签中。Structure
我认为我需要做的就是将它们解析出来并据此创建结构。如何做到这一点是我难过的地方。
此外,还有一个Sequence
节点用于存储有关它脱离其父元素的索引子元素的信息。
我想做的事
我想做的是创建一堆数据库条目(最好在 MPTT 中),以便我可以轻松生成导航树,然后我可以开始担心“抓取”所有单个文件,以便我可以将它们的内容存储在数据库也。不知何故,我需要解析 WBS 节点值以在表中创建它的“索引”。
我希望解决方案比我预期的更简单。建议,正确方向的刺激将不胜感激。
我计划在 CakePHP 中使用 TreeBehavior 来管理它,但我不一定必须使用它来处理文件。