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

技術的な観点から質問に答えようとしているように感じますが、ここでの問題はプロセスです。

なんでなんで?あなたのクライアントはそのようなデータを入力することを主張していますか?それは完全にばかげています。あなたはそれを検証することさえ悪夢を見るでしょう。適切に解析することは言うまでもありません。

あなたが彼らのためにまともなユーザーインターフェースをロールバックし、あなた自身のストレージメカニズムを選択することを彼/彼女に伝えてください、そしてそれはユーザーがそのようにそれを入力することによって持つすべての問題/問題と間違ったフォーマットを軽減します。狂気です。

もう1つのまったく異なる注意点は、子供は1人の親から来ているように見えることです。私はホモサピエンスが自生していることに気づいていませんでした。

于 2010-01-29T11:04:02.557 に答える
2

次のようなマークアップを使用する場合:

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

janeSimpleXML で解析するとnodeValue、要素の属性になります。child

trim()次のタグのために空白が含まれる可能性があるため、値を覚えておいてください。

于 2010-01-29T10:31:30.877 に答える
0

回答の1つであなたの返信を見ました...クライアントは、人々がこれを入力するのにユーザーフレンドリーであることを望んでいます。XML 構造は、情報を入力する最も不親切な手段の 1 つです。実際にはかなりマゾヒスティックであり、むしろyaml yamlを使用してspyc解析します

于 2010-01-29T10:48:11.143 に答える