it-swarm.com.de

Stellen Sie Leerzeichen und Tabulatoren im XML-Tag dar

Wie werden Leerzeichen und Tabulatoren im XML-Tag dargestellt? Gibt es Sonderzeichen, die sie darstellen sollen?.

34
balaweblog

Ich denke, Sie könnten einen tatsächlichen Bereich oder eine Registerkarte direkt in einem XML-Dokument verwenden. Wenn Sie jedoch nach Sonderzeichen suchen, um sie darzustellen, so dass Textverarbeitungsprogramme sie nicht durcheinander bringen können, dann gilt:

space =  
tab   = 	
55
galets

Arbeite für mich

\n = 

\r = 
\t = 	
space =  

Hier ein Beispiel zur Verwendung in XML

<KeyWord name="hello&#x9;" />
19
Wasim A.

Im tag (dh Name) eines XML-Elements dürfen keine Leerzeichen und Registerkarten vorhanden sein. Weitere Informationen finden Sie in den Spezifikationen: http://www.w3.org/TR/REC-xml/#NT-STag) . Neben alphanumerischen Zeichen sind in einem Namen Doppelpunkt, Unterstrich, Bindestrich und Punkt zulässig. Der erste Buchstabe darf kein Bindestrich oder Punkt sein. Bestimmte Unicode-Zeichen sind ebenfalls zulässig, ohne tatsächlich zu überprüfen. Ich würde sagen, dass es sich um internationale Buchstaben handelt.

8
David Hanak

Neue, erweiterte Antwort auf eine alte, häufig gestellte Frage ...

Leerzeichen in XML-Komponentennamen

Summary:Whitespace-Zeichen sind nicht in XML-Element- oder Attributnamen zulässig.

Hier sind die wichtigsten Punkte des Unicode-Codes in Bezug auf Whitespace:

  • #x0009 CHARACTER TABULATION
  • #x0020 RAUM
  • #x000A LINE FEED (LF)
  • #x000D RÜCKSENDUNG (CR)
  • #x00A0 NO-BREAK SPACE
  • [#x2002-#x200A] EN RAUM durch HAIR SPACE
  • #x205F MITTLERER MATHEMATISCHER RAUM
  • #x3000 IDEOGRAPHISCHER RAUM

Keine dieser Codepunkte ist von W3C XML BNF für XML-Namen zulässig :

NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] |
                  [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] |
                  [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
                  [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                  [#x10000-#xEFFFF]
NameChar      ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] |
                  [#x203F-#x2040]
Name          ::= NameStartChar (NameChar)*

Leerzeichen in XML-Inhalt (keine Komponentennamen)

Zusammenfassung:Whitespace-Zeichen are sind natürlich im XML-Inhalt zulässig.

Alle oben genannten Whitespace-Codepunkte sind im XML-Inhalt von W3C XML BNF für Char erlaubt:

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
/* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */

Unicode-Codepunkte können als Zeichenreferenzen eingefügt werden. Es werden sowohl dezimale &#decimal;- als auch hexadezimale &#xhex;-Formulare unterstützt.

8
kjhughes

Wenn Sie über das Problem sprechen, bei dem mehrere und nicht-Leerzeichen-Whitespace-Zeichen speziell von Attributwerten entfernt werden, dann ja, indem Sie sie als Zeichenreferenzen codieren, wie dies behoben wird.

2
bobince

Damit es funktioniert, muss ich den Hex-Wert des Space innerhalb des CDATA-xml-Elements codieren, sodass das Post-Parsing genau so wie in der htm-Webgae-Datei addiert wird. (alle oben genannten Ideen und Antworten sind nützlich)

<my-xml-element><![CDATA[&#x20;]]></my-xml-element>
1
user3584056

Ungültige XML-Tag-Namen-Zeichen können mit Unicode UCS-2 codiert werden. Das funktioniert sehr gut. Ich benutze es, um XML zu erstellen, das in JSON umgewandelt wird (JPath ist schwach im Vergleich zu XPath). Beachten Sie den Umgang mit Leerzeichen, (,) Zeichen. Unicode-UCS-2-Codetabelle: http://www.columbia.edu/ Kermit/ucs2.html

        tag.Name = tag.Name.Replace(" ", "_x0020_");
        tag.Name = tag.Name.Replace("(", "_x0028_");
        tag.Name = tag.Name.Replace(")", "_x0029_");

XML:

  <Internal_x0020_Chargeback_x0020_ID>{CHARGEBACKCODE}</Internal_x0020_Chargeback_x0020_ID>
  <Bill_x0020_To>{CHARGEBACKCODE}</Bill_x0020_To>
  <Operator_x0020_or_x0020_Directly_x0020_Responsible_x0020_Individual_x0020__x0028_DRI_x0029_>[email protected]</Operator_x0020_or_x0020_Directly_x0020_Responsible_x0020_Individual_x0020__x0028_DRI_x0029_>

über json.net in json umgewandelt:

    "Internal Chargeback ID": "{CHARGEBACKCODE}",
    "Bill To": "{CHARGEBACKCODE}",
    "Operator or Directly Responsible Individual (DRI)": "[email protected]",
0
jlo-gmail

Ich hatte das gleiche Problem und keine der obigen Antworten löste das Problem, also versuchte ich etwas ganz Unkompliziertes: Ich habe gerade meinen strings.xml\n\t

Der komplette String sieht so aus <string name="premium_features_listing_3">- Automatische Aktualisierung der\n\tDatenbank</string>

Ergebnisse in: 

  • Automatische Aktualisierung der

    Datenbank

(ohne zusätzliche Zeile dazwischen)

Vielleicht hilft es anderen. Grüße 

0
Martin Pfeffer