Hollabolla: Wo liegt das problem beim "&"??

Bitte helft mir!!!!
Ich habe eine XML-Datei die ich über PHP parse, den Inhalt modifiziere und anschließend wieder zurückschreibe, das klapt auch ohne probleme es sei den in dem text der zurückgeschrieben wird befindet sich ein "&". dann kriege ich die "not well-formed" meldung beim parsen und anzeigen. Da aber alle anderen sonderzeichen (öäü/"§"/§$ usw.) funktionieren verstehe ich das Problem nicht.
Die xml-datei ist mit ISO-8859-1 encoded, und ich hab auch schon versucht alle "&" durch & oder <[CDTA[&]]> zu ersetzen. ohne erfolg

  1. Hallo,

    Bitte helft mir!!!!
    Ich habe eine XML-Datei die ich über PHP parse, den Inhalt modifiziere und anschließend wieder zurückschreibe, das klapt auch ohne probleme es sei den in dem text der zurückgeschrieben wird befindet sich ein "&". dann kriege ich die "not well-formed" meldung beim parsen und anzeigen.

    s.u.

    Da aber alle anderen sonderzeichen (öäü/"§"/§$ usw.) funktionieren verstehe ich das Problem nicht.
    Die xml-datei ist mit ISO-8859-1 encoded, und ich hab auch schon

    das erklärt, warum die Umlaute zulässig sind.

    versucht alle "&" durch & oder <[CDTA[&]]> zu ersetzen. ohne erfolg

    & hat in XML die Bedeutung, eine Character Entity einzuleiten. Daher muß es ersetzt werden.
    &#x26; oder &#48; sollten eigentlich genauso wie & funktionieren.

    Der XML 1.0-Standard sagt dazu:
    The ampersand character (&) and the left angle bracket (<) may appear in their literal form only when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they must be escaped using either numeric character references or the strings "&" and "<" respectively. The right angle bracket (>) may be represented using the string ">", and must, for compatibility, be escaped using ">" or a character reference when it appears in the string "]]>" in content, when that string is not marking the end of a CDATA section.

    Was steht denn in dem erzeugten File drin an den Stellen, wo Du ein & im Text hast? Wird dort irgendwas durch PHP schon ersetzt?

    Andreas

    1. erstmal danke...

      Was steht denn in dem erzeugten File drin an den Stellen, wo Du ein & im Text hast? Wird dort irgendwas durch PHP schon ersetzt?

      eigentlich nicht, ich experimentiere hier halt grade rum durch was ich es ersetzen könnte damit es klappt. dein Vorschlag (&#26;) führt zu "XML error: reference to invalid character number at line 2"

      und (&#48;) führt dazu das er weder das "&" noch text der danachsteht anzeigt. aber er kann es parsen.

      1. erstmal danke...

        Bitte.

        dein Vorschlag (&#26;) führt zu "XML error: reference to invalid character number at line 2"

        Mein Vorschlag war nicht &#26;, sondern &#x26;

        Andreas

    2. hallo,

      & hat in XML die Bedeutung, eine Character Entity einzuleiten. Daher muß es ersetzt werden.
      &#x26; oder &#48; sollten eigentlich genauso wie & funktionieren.

      48 ist wohl ein tippfehler!?

      &#38; ist  &

      Der XML 1.0-Standard sagt dazu:

      http://www.w3.org/TR/2000/REC-xml-20001006#sec-predefined-ent

      grüße
      thomas