コード例 #1
0
        public void EncodeWithTranslation(string str, XmlStringType valueType)
        {
            unsafe
            {
                fixed(char *start = str)
                {
                    char *end = start + str.Length;

                    EncodeWithTranslation(start, end, valueType);
                }
            }
        }
コード例 #2
0
        public void EncodeWithTranslation(char[] buffer, int offset, int count, XmlStringType valueType)
        {
            ValidateBufferBounds(buffer, offset, count);

            unsafe
            {
                fixed(char *bufferStart = buffer)
                {
                    char *start = bufferStart + offset;
                    char *end   = bufferStart + (offset + count);

                    EncodeWithTranslation(start, end, valueType);
                }
            }
        }
コード例 #3
0
        private unsafe void EncodeWithTranslation(char *start, char *end, XmlStringType valueType)
        {
            for (char *p = start; p < end; p++)
            {
                switch (*p)
                {
                case '&':
                    Encode("&amp;");
                    break;

                case '<':
                    Encode("&lt;");
                    break;

                case '>':
                    if (valueType != XmlStringType.AttributeValue)
                    {
                        Encode("&gt;");
                    }
                    else
                    {
                        Encode(*p);
                    }
                    break;

                case Char13:
                    Encode(Char13EntityReference);
                    break;

                case Char10:
                    if (valueType == XmlStringType.AttributeValue)
                    {
                        Encode("&#xA;");
                    }
                    else
                    {
                        Encode(*p);
                    }
                    break;

                case Char9:
                    if (valueType == XmlStringType.AttributeValue)
                    {
                        Encode("&#x9;");
                    }
                    else
                    {
                        Encode(*p);
                    }
                    break;

                case '\"':
                    if (valueType == XmlStringType.AttributeValue)
                    {
                        Encode("&quot;");
                    }
                    else
                    {
                        Encode(*p);
                    }
                    break;

                default:
                    Encode(*p);
                    break;
                }
            }
        }
コード例 #4
0
 internal static void WriteValue(this XmlWriter writer, object value, XmlStringType type)
 {
     writer.WriteString(XmlHelpers.FormatXmlString(value.ToString(), type == XmlStringType.FilePath));
 }
コード例 #5
0
        internal static void WriteElementString(this XmlWriter writer, string name, string value, XmlStringType type)
        {
            switch (type)
            {
            case XmlStringType.Default:
            case XmlStringType.FilePath:
                writer.WriteElementString(name, XmlHelpers.FormatXmlString(value, type == XmlStringType.FilePath));
                break;

            case XmlStringType.MultiLanguageText:
                writer.WriteStartElement(name);
                writer.WriteStartElement("MultiLanguageText");
                writer.WriteAttributeString("Lang", CultureInfo.CurrentCulture.Name);
                writer.WriteValue(value, XmlStringType.Default);
                writer.WriteEndElement();
                writer.WriteEndElement();
                break;

            default:
                break;
            }
        }
コード例 #6
0
 internal static void WriteAttributeString(this XmlWriter writer, string name, string value, XmlStringType type)
 {
     writer.WriteAttributeString(name, XmlHelpers.FormatXmlString(value, type == XmlStringType.FilePath));
 }