У меня есть строка sMediaXML
, которая напоминает фрагмент XML, за исключением того факта, что она содержит escape-символы обратной косой черты. Я не могу загрузить эту строку в XmlDocument
, что позволяет мне проверить и увидеть, существует ли элемент и т. д. Мне нужно сохранить формат строки точно так, как вы видите ниже, потому что другой код будет зависеть от него позже.
// sMediaXML = "<media><cd><burned value=\"true\" /></cd><vinyl><pressed value=\"true\" /></vinyl></media>"
using System;
using System.IO;
using System.Text;
using System.Xml;
namespace xmlWriter_Console
{
class Program
{
static void Main(string[] args)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;
MemoryStream strm = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(strm, settings))
{
writer.WriteStartElement("media");
writer.WriteStartElement("cd");
writer.WriteStartElement("burned");
writer.WriteAttributeString("value", "true");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteStartElement("vinyl");
writer.WriteStartElement("pressed");
writer.WriteAttributeString("value", "true");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
string sMediaXML = Encoding.UTF8.GetString((strm).ToArray());
Boolean bNodeExists;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(sMediaXML);
if (xmlDoc.SelectSingleNode("/media/digital/@value").Value != null)
{
bNodeExists = true;
}
else
{
bNodeExists = false;
}
}
}
}