Я должен генерировать XML как строку в C#?

Основная проблема с сессиями PHP и безопасностью (помимо перехвата сеанса) идет с тем, в какой среде Вы находитесь. По умолчанию PHP хранит данные сессии в файле во временном каталоге ОС. Без любой специальной мысли или планирующий это - мировой читаемый каталог, таким образом, вся Ваша информация о сессии общедоступна любому с доступом к серверу.

Что касается поддержания сессий по нескольким серверам. В той точке было бы лучше переключиться, PHP пользователю обработал сессии, где это звонит, Ваши обеспеченные функции к CRUD (создайте, считайте, обновите, удалите), данные сессии. В той точке Вы могли хранить информацию сессии в базе данных или кэш-памяти как решение так, чтобы все серверы приложений имели доступ к данным.

Хранение Ваших собственных сессий может также быть выгодным, если Вы находитесь на общем сервере, потому что оно позволит Вам сохранить его в базе данных, которая Вы часто времена имеют больше контроля затем файловая система.

11
задан macleojw 14 August 2009 в 14:47
поделиться

8 ответов

Классы XDocument, XElement и XAttribute значительно упрощают создание xml в C #. Чем использовать XmlDocument или XmlWriter.

В качестве примера, чтобы создать это:

<RootElement>
    <ChildElement Attribute1="Hello" Attribute2="World" />
    <ChildElement Attribute1="Foo" Attribute2="Bar" />
</RootElement>

Вы можете сделать это:

XDocument xDocument = new XDocument(
    new XElement("RootElement",
        new XElement("ChildElement",
            new XAttribute("Attribute1", "Hello"),
            new XAttribute("Attribute2", "World")
        ),
        new XElement("ChildElement",
            new XAttribute("Attribute1", "Foo"),
            new XAttribute("Attribute2", "Bar")
        )
    )
);
13
ответ дан 3 December 2019 в 02:02
поделиться

Создание XML посредством конкатенации строк - определенно плохая практика. XmlDomDocument не очень многословен или запутан; Я всегда считал, что с ним довольно легко (и безопасно) работать.

2
ответ дан 3 December 2019 в 02:02
поделиться

Вы пробовали использовать Linq в Xml? он не очень подробный:

XElement xml = new XElement("contacts",
                    new XElement("contact", 
                        new XAttribute("id", "1"),
                        new XElement("firstName", "first"),
                        new XElement("lastName", "last")
                    ),
                    new XElement("contact", 
                        new XAttribute("id", "2"),
                        new XElement("firstName", "first2"),
                        new XElement("lastName", "last2")
                    )
                );
Console.Write(xml);
7
ответ дан 3 December 2019 в 02:02
поделиться

Прежде чем вы подумаете о создании XML с использованием конкатенации строк вместо правильной библиотеки, прочтите, пожалуйста, спецификацию XML . Обратите особое внимание на такие тонкости, как кодировки и ссылки на символы.

Вы можете сделать это сейчас. Я подожду.

Теперь спросите себя - действительно ли вы хотите убедиться, что ваша объединенная строка действительна в соответствии со всеми этими правилами и самостоятельно написать все вспомогательные функции, или вы хотите использовать хорошо протестированную библиотеку, где вся эта логика была инкапсулирована для вас?

Хорошо.

Рад, что отсортировано.

5
ответ дан 3 December 2019 в 02:02
поделиться

Нет, не надо. Библиотеки XML в .NET (и других платформах) гарантируют, что вы создаете действительный XML, и экономят много времени, беспокоясь о его повторном синтаксическом анализе. Кроме того, если кому-то другому нужно использовать ваш XML и он жалуется на его неправильность, вы можете исключить сам XML и сэкономить много времени на проверку правильности конкатенации.

2
ответ дан 3 December 2019 в 02:02
поделиться

Я бы рекомендовал следующий подход в большинстве случаев, когда вы создаете xml.

  1. Создайте XSD для вашего XML
  2. Скомпилируйте XSD в объект
  3. Заполните свой объект
  4. Десериализация вашего объекта в xml

Преимущества для этого, а не просто создание xml с помощью XMLDocuments 1. Это хорошо определяется с помощью XSD. Другие разработчики знают, какой XML они получают (или что они изменяют) 2. Легко изменить в будущем. 3. Намного меньше вероятность ошибок опечаток в вашем XML-документе.

Сообщите мне, если вам понадобятся какие-либо примеры кода или дополнительная помощь в том, как это будет выполняться.

Примечание: мы генерируем наши файлы cs из xsds при сборке время, чтобы убедиться, что кто-то вручную не изменит сгенерированный код.

3
ответ дан 3 December 2019 в 02:02
поделиться

XmlWriter не так уж и плох, если вы правильно форматируете код:

StringBuilder builder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(builder))
{
    writer.WriteStartDocument();

    writer.WriteStartElement("root");

    writer.WriteStartElement("Node1");
    writer.WriteAttributeString("att1", "value");
    writer.WriteEndElement();

    writer.WriteStartElement("Node2");
    writer.WriteString("inner text");
    writer.WriteEndElement();

    writer.WriteEndElement();

    writer.WriteEndDocument();
}

Вы также можете добавить идентификацию в свой код для облегчения понимания.

using (XmlWriter writer = XmlWriter.Create(builder))
{
    writer.WriteStartDocument();
    {
        writer.WriteStartElement("root");
        {
            writer.WriteStartElement("Node1");
            writer.WriteAttributeString("att1", "value");
            writer.WriteEndElement();

            writer.WriteStartElement("Node2");
            writer.WriteString("inner text");
            writer.WriteEndElement();
        }
        writer.WriteEndElement();
    }
    writer.WriteEndDocument();
}
2
ответ дан 3 December 2019 в 02:02
поделиться

Используя XmlTextWriter, вы можете перетащить результаты в StringBuilder и использовать полученную строку. Кроме того, с помощью XmlTextWriter вы можете поместить контент в поток. Итак, если вам нужна гибкость, используйте XmlTextWriter.

Если ваш вопрос касается создания XML-файла путем конкатенации строк, не делайте этого. Используйте StringBuilder, если вы собираетесь собрать XML-документ без какой-либо другой помощи.

Я бы избегал ручного создания XML-документа с помощью «конкатенации». Вы увеличиваете вероятность ошибок в сгенерированном xml. Классы создания xml от Microsoft были достаточно тщательно протестированы. Используйте это в своих интересах.

1
ответ дан 3 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

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