Написание функции, которая возвращает немного XML? - PullRequest
0 голосов
/ 05 февраля 2011

Вероятно, это очень новый вопрос, но я пытаюсь написать функцию, которая возвращает что-то вроде XMLWriter, а затем добавляет его содержимое в другой xmlwriter.

Например:

  XmlWriter ToXML()
    {
        XmlWriterSettings oSettings = new XmlWriterSettings();
        oSettings.Indent = true;
        oSettings.OmitXmlDeclaration = false;
        oSettings.Encoding = Encoding.Unicode;
        Stream output = Stream.Null;

        XmlWriter writer = XmlWriter.Create(output, oSettings);
        {
            writer.WriteStartDocument(true);
            writer.WriteComment("This BaseSprite was created by the in-phone level editor");

            writer.WriteStartElement("testelement");

            writer.WriteStartAttribute("Name");
            writer.WriteValue("John Howard");
            writer.WriteEndAttribute();

            writer.WriteEndElement();
        }

        return writer;
    }

   void SomeOtherFunction()
   {
      XMLWriter xmlthing;

   // add xml things to it

   xmlthing +=  ToXML(); // now the contents of ToXML has been added in to xmlthing
  }

Возможно ли это?

* Вопрос обновлен:

XmlWriter writer;
        XDocument doc = new XDocument();
        {
            writer = doc.CreateWriter();

            writer.WriteStartDocument(true);
            writer.WriteComment("This BaseSprite was created by the in-phone level editor");

            writer.WriteStartElement("testelement");

            writer.WriteStartAttribute("Name");
            writer.WriteValue("John Howard");
            writer.WriteEndAttribute();

            writer.WriteEndElement();

            writer.Close();
        }

        XDocument doc2 = new XDocument();
        {
            writer = doc2.CreateWriter();

            writer.WriteStartDocument(true);

            writer.WriteStartElement("testnestedelement");

            writer.WriteStartAttribute("DUUUUUDE");
            writer.WriteValue("WHERES MY CAR!?");
            writer.WriteEndAttribute();

            writer.WriteEndElement();

            writer.Close();
        }

        doc.Element("testelement").Add(doc2); // how can I make it so that doc2 is added as a nested element in 'testlement' from doc?

1 Ответ

1 голос
/ 05 февраля 2011

Я бы предпочел использовать XmlDocument, если вам нужно составить Xml среди множества функций в вашем приложении.http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx или XDocument в Silverlight: http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument%28v=VS.95%29.aspx, затем вы создаете single XDocument или XmlDocument и передаете его всем функциям, необходимым для управления им.

...