Строковый Escape в XML

В Python 2 можно сделать:

print "%02d" % (1,)

В основном % похож printf или sprintf.

<час>

Для Python 3. + то же поведение может быть достигнуто с:

print("{:02d}".format(1))
<час>

Для Python 3.6 + то же поведение может быть достигнуто со струнами фа:

print(f"{1:02d}")
89
задан jessehouwing 29 December 2016 в 20:24
поделиться

4 ответа

public static string XmlEscape(string unescaped)
{
    XmlDocument doc = new XmlDocument();
    XmlNode node = doc.CreateElement("root");
    node.InnerText = unescaped;
    return node.InnerXml;
}

public static string XmlUnescape(string escaped)
{
    XmlDocument doc = new XmlDocument();
    XmlNode node = doc.CreateElement("root");
    node.InnerXml = escaped;
    return node.InnerText;
}
72
ответ дан 24 November 2019 в 07:10
поделиться

Джордж, это просто. Всегда используйте XML API для обработки XML. Они делают все экранирование и отмену экранирования за вас.

Никогда не создавайте XML, добавляя строки.

8
ответ дан 24 November 2019 в 07:10
поделиться

EDIT: вы говорите: «Я объединяю простой и короткий XML-файл, и я не использовать сериализацию, поэтому мне нужно явно экранировать символ XML вручную ».

Я бы настоятельно не советовал вам делать это вручную. Используйте XML API, чтобы сделать все это за вас - прочтите исходные файлы, объедините их в один документ, как вам нужно (вы, вероятно, захотите использовать XmlDocument.ImportNode ), а затем запишите его. еще раз. Вы не хотите писать свои собственные анализаторы / средства форматирования XML. Сериализация здесь несколько неактуальна.

Если вы дадите нам короткий, но полный пример того, что именно вы пытаетесь сделать, мы, вероятно, сможем помочь вам вообще не беспокоиться о побеге.


Оригинал answer

Не совсем понятно, что вы имеете в виду, но обычно XML API делают это за вас. Вы устанавливаете текст в узле, и он автоматически избегает всего, что ему нужно. Например:

Пример LINQ to XML:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        XElement element = new XElement("tag",
                                        "Brackets & stuff <>");

        Console.WriteLine(element);
    }
}

Пример DOM:

using System;
using System.Xml;

class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        XmlElement element = doc.CreateElement("tag");
        element.InnerText = "Brackets & stuff <>";
        Console.WriteLine(element.OuterXml);
    }
}

Вывод обоих примеров:

<tag>Brackets &amp; stuff &lt;&gt;</tag>

Это, конечно, при условии, что вы хотите экранировать XML. Если нет, опубликуйте подробности.

Не совсем понятно, что вы имеете в виду, но обычно XML API делают это за вас. Вы устанавливаете текст в узле, и он автоматически избегает всего, что ему нужно. Например:

Пример LINQ to XML:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        XElement element = new XElement("tag",
                                        "Brackets & stuff <>");

        Console.WriteLine(element);
    }
}

Пример DOM:

using System;
using System.Xml;

class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        XmlElement element = doc.CreateElement("tag");
        element.InnerText = "Brackets & stuff <>";
        Console.WriteLine(element.OuterXml);
    }
}

Вывод обоих примеров:

<tag>Brackets &amp; stuff &lt;&gt;</tag>

Это, конечно, при условии, что вы хотите экранировать XML. Если нет, опубликуйте подробности.

Не совсем понятно, что вы имеете в виду, но обычно XML API делают это за вас. Вы устанавливаете текст в узле, и он автоматически избегает всего, что ему нужно. Например:

Пример LINQ to XML:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        XElement element = new XElement("tag",
                                        "Brackets & stuff <>");

        Console.WriteLine(element);
    }
}

Пример DOM:

using System;
using System.Xml;

class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        XmlElement element = doc.CreateElement("tag");
        element.InnerText = "Brackets & stuff <>";
        Console.WriteLine(element.OuterXml);
    }
}

Вывод обоих примеров:

<tag>Brackets &amp; stuff &lt;&gt;</tag>

Это, конечно, при условии, что вы хотите экранировать XML. Если нет, опубликуйте подробности.

37
ответ дан 24 November 2019 в 07:10
поделиться
120
ответ дан 24 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: