В C#, что лучший метод должен отформатировать строку как XML?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

40
задан Racooon 3 October 2011 в 23:08
поделиться

8 ответов

string unformattedXml = "<?xml version=\"1.0\"?><book><author>Lewis, C.S.</author><title>The Four Loves</title></book>";
string formattedXml = XElement.Parse(unformattedXml).ToString();
Console.WriteLine(formattedXml);

Вывод:

<book>
  <author>Lewis, C.S.</author>
  <title>The Four Loves</title>
</book>

определение XML не производится ToString (), но это Сохранением ()...

  XElement.Parse(unformattedXml).Save(@"C:\doc.xml");
  Console.WriteLine(File.ReadAllText(@"C:\doc.xml"));

Вывод:

<?xml version="1.0" encoding="utf-8"?>
<book>
  <author>Lewis, C.S.</author>
  <title>The Four Loves</title>
</book>
71
ответ дан Wonko 27 November 2019 в 01:09
поделиться

К сожалению, не это не столь легко как метод FormatXMLForOutput, это - Microsoft, говорили о здесь;)

Так или иначе, с.NET 2.0, рекомендуемый подход должен использовать XMlWriterSettingsClass для установки форматирования, в противоположность установке свойств непосредственно на объекте XmlTextWriter. Дополнительную информацию см. в этой странице MSDN. Это говорит:

"В выпуске версии 2.0 Платформы.NET, методические рекомендации должны создать экземпляры XmlWriter с помощью XmlWriter. Создайте метод и класс XmlWriterSettings. Это позволяет Вам в полной мере пользоваться всеми новыми возможностями, представленными в этом выпуске. Для получения дополнительной информации посмотрите Создание Писатели XML".

Вот пример рекомендуемого подхода:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = ("    ");
using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
{
    // Write XML data.
    writer.WriteStartElement("book");
    writer.WriteElementString("price", "19.95");
    writer.WriteEndElement();
    writer.Flush();
}
15
ответ дан Ash 27 November 2019 в 01:09
поделиться

Используя новую Систему. Xml. Пространство имен Linq (Система. Xml. Блок Linq), можно использовать следующее:

string theString = "<nodeName>blah</nodeName>";
XDocument doc = XDocument.Parse(theString);

можно также создать фрагмент с:

string theString = "<nodeName>blah</nodeName>";
XElement element = XElement.Parse(theString);

, Если строкой еще не является XML, можно сделать что-то вроде этого:

string theString = "blah";
//creates <nodeName>blah</nodeName>
XElement element = new XElement(XName.Get("nodeName"), theString); 

Что-то для замечания в этом последнем примере - то, что XElement будет XML Кодировать обеспеченную строку.

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

13
ответ дан Jason Jackson 27 November 2019 в 01:09
поделиться

Это кажется, что Вы хотите загрузить XML в , XmlTextWriter возражает и установил свойства Formatting и Indentation:

writer.Formatting = Formatting.Indented;
writer.Indentation = 1;
writer.IndentChar = '\t';
5
ответ дан defeated 27 November 2019 в 01:09
поделиться

Подход Jason является самым простым. Вот метод:

private static string FormatXmlString(string xmlString)
{
    System.Xml.Linq.XElement element = System.Xml.Linq.XElement.Parse(xmlString);
    return element.ToString();
}
4
ответ дан JohnnyM 27 November 2019 в 01:09
поделиться

Если просто необходимо выйти из символов XML, следующее могло бы быть полезным:

string myText = "This & that > <> &lt;";
myText = System.Security.SecurityElement.Escape(myText);
1
ответ дан sbeskur 27 November 2019 в 01:09
поделиться

Является строка допустимым XML? Вы имеете в виду, как можно преобразовать строку XML в XML-документ? Если так, сделайте это:

XmlDocument xml = new XmlDocument();

xml.LoadXml( YourString );
0
ответ дан rp. 27 November 2019 в 01:09
поделиться

Предполагая, что вы просто хотите переформатировать XML-документ, чтобы разместить новые узлы на новых строках и добавить отступы , то, если вы используете .NET 3.5 или выше, лучшим решением будет синтаксический анализ и вывод с помощью XDocument, что-то вроде:

string unformattedXml;
string formattedXml;

unformattedXml = "<?xml version=\"1.0\"?><book><author>Lewis, C.S.</author><title>The Four Loves</title></book>";
formattedXml = System.Xml.Linq.XDocument.Parse(unformattedXml).ToString();

Console.WriteLine(formattedXml);

Neat hu?

Это должно затем переформатировать узлы XML.

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

Фактически, чтобы сделать это с использованием классов до Linq:

string unformattedXml;
string formattedXml;

unformattedXml = "<?xml version=\"1.0\"?><book><author>Lewis, C.S.</author><title>The Four Loves</title></book>";
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(unformattedXml);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.Xml.XmlWriter xw = System.Xml.XmlTextWriter.Create(sb, new System.Xml.XmlWriterSettings() { Indent = true });
doc.WriteTo(xw);
xw.Flush();
formattedXml = sb.ToString();
Console.WriteLine(formattedXml);
9
ответ дан 27 November 2019 в 01:09
поделиться
Другие вопросы по тегам:

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