لصناعة السيارات في تكرار الهياكل باستخدام simpleXML؟

StackOverflow https://stackoverflow.com/questions/1614182

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا تحديد عناصر النموذج في بنية XML بسيط مثل ذلك:

<subtab id="page_background" label="Page Background" prefix="page">
   <input label="Background color" field="bgcolor" type="color"/>
   <input label="Background image" field="bgimage" type="image"/>
   <space />
 </subtab>
   etc.

ولدي كتل كبيرة تحتوي على معلومات متطابقة تماما، على سبيل المثال حقول النموذج لتحديد خلفية الصفحة، ناحية المحتوى، الشريط العلوي، وهلم جرا. وهذا ما جعل ملف XML مرهقة للغاية للعمل مع ونتطلع من خلال.

هل هناك XML الأصلي "نسخ + لصق" بناء الأمر / / بيان أن يقول محلل XML - في حالتي، simpleXML - للبحث عن محتويات فرع معين من آخر؟

في شبه كود:

<subtab id="content_background" copyFrom="../page_background">
<!-- sub-elements from "page_background" are magically copied here 
     by the parser -->
</subtab>
هل كانت مفيدة؟

المحلول

وXML هو مجرد شكل، لذلك أي أمر نسخة. XSLT يمكن أن نفعل ذلك، ولكن من المحتمل أن يكون معقدا للغاية بالنسبة لاحتياجاتك.

ونصيحتي: إنشاء دالة PHP يضيف عناصر النمطي الخاص بك. على سبيل المثال:

function default_elements(SimpleXMLElement $node)
{
    $default = array(
        'input' => array(
            array('label'=>"Background color", 'field'=>"bgcolor", 'type'=>"color"),
            array('label'=>"Background image", 'field'=>"bgimage", 'type'=>"image")
        ),
        'space' => array(
            array()
        )
    );

    foreach ($default as $name => $elements)
    {
        foreach ($elements as $attrs)
        {
            $new = $node->addChild($name);
            foreach ($attrs as $k => $v)
            {
                $new[$k] = $v;
            }
        }
    }
}

نصائح أخرى

وأنت من شأنه أن يخلق SimpleXmlElement مع شكل واستخدام استنساخ أو تحديث أي تغيير سمات أو العلامات الفرعية في كل مرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top