0

如果你能帮上忙,那你就是个天才。

基本上,我会有一些这样的文字:

<parent wealthy>
   <parent>
      <children female>
        <child>
          jessica
          <hobbies>
            basketball, soccer, video games
          </hobbies>
        </child>
        <child>
          jane
          <hobbies>
            cooking, shopping, boys
          </hobbies>
        </child>         
      </children female>
      <children male>
       <child>
         josh
         <hobbies>
           tennis, swimming
         </hobbies>
       </child>
      </children male>
    </parent>
   </parent wealthy>
   <parent poor>
     <parent>
       <children male>
         <child>
          ---
          <hobbies>...</hobbies>
         </child>
       </children male>
     </parent>
   </parent poor>

所以总而言之,我将有一个像这样的父子层次结构:

- parent wealthy/ parent poor /parent something else
  -- parent
     -- children male/ children female / children something else
        -- child
         -- (name of the child is given without any tags around it)
         -- hobbies

我想知道如何解析所有这些信息并将它们存储在 php 数组/对象/变量中,同时保持它们出现的顺序?例如,如果<parent wealthy>出现在上面,<parent poor>我想让它们保持相同的顺序,如果<children male>出现在前面,也会发生同样的事情<children female>

这将是几乎完全有效的 XML,我可以使用 SimpleXML 来解析它,但是问题是孩子的名字不会出现在任何标签之间,并且客户端希望保持这种方式以方便用户使用。例如:

    <child>
      jane
      <hobbies>
        cooking, shopping, boys
      </hobbies>
    </child>      

这里 'jane' 出现在任何标签之外,并且<hobbies>出现在一些标签之间。

如何解析?请给一些建议。如果您建议使用正则表达式,请提供可用于您的答案被接受的正则表达式,因为我不知道正则表达式。

谢谢。

编辑:主要问题是客户希望将普通文本与标签中的文本混合。例如:

text text test <hobbies>...<hobbies>. text text text <age>30</age>

那怎么解析呢?

4

3 回答 3

2

我觉得人们试图从技术角度回答这个问题,但这里的问题是过程。

为什么哦为什么?您的客户坚持要输入这样的数据?这完全是荒谬的。即使验证它,你也会做噩梦。更不用说正确解析它了。

告诉他/她你为他们推出了一个像样的用户界面,选择你自己的存储机制,它将减轻用户通过这样输入它所遇到的所有问题/问题和不正确的格式。这是疯狂

另一个需要注意的完全不同的事情是,孩子似乎来自一个父母。我不知道智人是自配的。

于 2010-01-29T11:04:02.557 回答
2

当使用这样的标记时:

<child>
  jane
   <hobbies>
    cooking, shopping, boys
   </hobbies>
 </child>     

jane使用 SimpleXML 解析时将nodeValue在元素的属性中。child

请记住trim()该值,因为由于以下标记,它可能包含空格。

于 2010-01-29T10:31:30.877 回答
0

我看到您对其中一个答案的回复是......客户希望它对用户友好,以便人们输入。XML 结构是最不友好的信息输入方式之一。实际上是非常自虐的,而是使用 yaml yaml并用spyc解析它

于 2010-01-29T10:48:11.143 回答