Flash AS3 و XML: طريقة لإصلاح فواصل الخط في htmltext التي تستخدم علامات في XML؟

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

  •  26-09-2019
  •  | 
  •  

سؤال

أقوم باستيراد النص من ملف XML وأنا أستخدم htmltext لمحاولة الاحتفاظ ببعض التصميم مع العلامات. لدي خط الوجه العادي والجريء مضمن ، والجرأة تعمل بشكل جيد. المشكلة هي أنه يعلن المساحات حول الكلمات بالخط العريض مثل المسافة البادئة للفقرة ثم تجعل خطوة خط من بعد. ما الذي يحدث ، هل هناك طريقة لإصلاح؟

fromxmlText.htmlText = theXML.contenttext;

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

هل كانت مفيدة؟

المحلول

لإضافة HTML إلى XML يجب استخدامك CDATA الكتل وإلا فإن HTML تعتبر جزءًا من وثيقة XML.

على سبيل المثال

<root>
    <someHtml><![CDATA[I can contain<br />html tags]]></someHtml>
    <somePlainText>I cannot contain html tags since they will be 
                   seen as XML nodes</somePlainText>
</root>

تأكد أيضًا من حفظ ملفات XML الخاصة بك مع نهايات خط UNIX وترميزها على أنها UTF-8. إذا كنت تستخدم نهايات خط Windows (\r\n) ثم يميل الفلاش إلى مضاعفة المساحة الجديدة. يجب أن يسمح لك المحرر بتحديد نهايات الخط.

نصائح أخرى

كنت أستورد تغذية RSS ديناميكية في إعلان فلاش لي يحتوي على علامات HTML مضمنة. كانت لدي نفس المشكله. لقد استخدمت Regex للعثور والاستبدال. هنا هي الوظيفة التي كنت أستخدمها. يمكنك استخدام رمز regex الخاص بي لفعل الشيء نفسه. يبدو أننا نواجه نفس المشكلة. أتمنى أن يساعدك هذا:

وظيفة parserover_feature (Rover_Feature: XML): void {

var s:String = rover_feature.items.item[0].article;
s = s.replace(/(?:<br>)+/gi, '<br>');
s = s.replace(/\n/g, '');
container.info_txt.htmlText = s
//trace (s);

}

من الصعب أن نقول دون رؤية XML الخاص بك ، ولكن حاول العبث مع خصائص XML العالمية خصوصاً تجاهل whitespace. اعتمادًا على نهايات خطك ، قد تحتاج أيضًا إلى تجريدها قبل وضع النص في حقل النص.

إذا كنت تتضخم من XML ، فتأكد من أنك تستخدم علامات CDATA لإظهار التعليمات البرمجية المسبقة ، وإلا فإنك تقوم بإخراج محتوى العقد المتعددة في XML.

يرى مدارس W3 لمزيد من المعلومات.

تأكد أيضًا من ضبط Textfield الخاص بك multiline قبل تعيين textfield.htmltext = xml مع
بمعنى آخر

var myText:TextField = new TextField();
myText.multiline = true;
myText.htmlText = (your xml node with the <br/ >);
addChild(myText);

أتمنى أن يساعدك هذا.

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