Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
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>
К сожалению, не это не столь легко как метод 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();
}
Используя новую Систему. 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-связанных типов.
Это кажется, что Вы хотите загрузить XML в , XmlTextWriter возражает и установил свойства Formatting и Indentation:
writer.Formatting = Formatting.Indented;
writer.Indentation = 1;
writer.IndentChar = '\t';
Подход Jason является самым простым. Вот метод:
private static string FormatXmlString(string xmlString)
{
System.Xml.Linq.XElement element = System.Xml.Linq.XElement.Parse(xmlString);
return element.ToString();
}
Если просто необходимо выйти из символов XML, следующее могло бы быть полезным:
string myText = "This & that > <> <";
myText = System.Security.SecurityElement.Escape(myText);
Является строка допустимым XML? Вы имеете в виду, как можно преобразовать строку XML в XML-документ? Если так, сделайте это:
XmlDocument xml = new XmlDocument();
xml.LoadXml( YourString );
Предполагая, что вы просто хотите переформатировать 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);