Flash AS3 und XML: Art und Weise zu beheben Zeilenumbrüche in html dass verwendet Tags in der XML?

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

  •  26-09-2019
  •  | 
  •  

Frage

Ich bin der Import von Text aus einer XML-Datei, und ich bin mit html zu versuchen, einige Styling mit Tags zu halten. Ich habe sowohl der regelmäßige und fett Schriftart eingebettet und der bolding funktioniert gut. Das Problem ist, dass es Anzeigen Räume um die Worte fett wie ein Absatzeinrückcodemarkierung und dann einen Zeilenumbruch nach ihnen machen. Was ist los, ist es eine Möglichkeit, zu beheben?

fromxmlText.htmlText = theXML.contenttext;

Wenn ich ziehen Sie den Text in einer txt-Datei wird es funktionieren, aber es aus einer XML-Datei verursacht flippige Formatierung nehmen. lil‘Hilfe?

War es hilfreich?

Lösung

Um HTML-Code in XML hinzufügen, müssen Sie verwenden CDATA Blöcke sonst die HTML betrachtet wird Teil das XML-Dokument.

z.

<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>

Auch stellen Sie sicher, Sie speichern Ihre XML-Dateien mit Unix-Zeilenenden und codiert als utf-8. Wenn Sie Windows verwenden Zeilenende (\r\n), dann neigen Flash Doppel Raum Zeilenumbrüche. Ihr Editor sollten Sie ermöglichen, die Zeilenende angeben.

Andere Tipps

Ich war Importieren eines dynamischen RSS-Feeds in eine Flash-Anzeige von mir, die eingebetteten HTML-Tags hatten. Ich habe das gleiche Problem. Ich benutzen regex zu finden und zu ersetzen. Hier ist die Funktion, die ich benutze. Sie können meine regex Code verwenden, da prob das Gleiche zu tun. Es scheint, wie wir das gleiche Problem wurden. Hoffe, das hilft:

Funktion 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);

}

Es ist schwer, ohne zu sehen, Ihre XML zu sagen, aber versuchen, mit dem Hantieren global XML-Eigenschaften insbesondere ignoreWhitespace . Je nach Ihrer Zeilenenden, können Sie diese auch benötigen abzustreifen, bevor Sie den Text in das Textfeld setzen.

Wenn Sie aus XML einbetten dann stellen Sie sicher, dass Sie CDATA-Tags verwenden vorformatiert Code zu erhalten, sonst werden Sie den Inhalt von mehreren Knoten in XML ausgegeben werden.

finden Sie unter w3 Schulen für weitere Informationen .

Auch stellen Sie sicher, dass Ihre Textfield ist auf multiline, bevor Sie Ihr textField.htmlText = xml-Set mit
d.

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

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top