2013-09-17 2 views
1

я пытаюсь создать XML с помощью C# и я отдаю себе отчет в традиционном методе создания XML, такие какСоздание XML в списках C#

XmlDocument doc = new XmlDocument(); 
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "utf-8", null); 
doc.InsertBefore(xmlDeclaration, doc.DocumentElement); 

XmlElement element1 = doc.CreateElement("", "body", ""); 
doc.AppendChild(element1); 

XmlElement element2 = doc.CreateElement("", "type", ""); 
element1.AppendChild(element2); 

XmlElement element3 = doc.CreateElement("", "Numbers", ""); 
element2.AppendChild(element3); 
XmlElement element4 = doc.CreateElement("", "one", ""); 
XmlText text1 = doc.CreateTextNode("1"); 
element4.AppendChild(text1); 
element3.AppendChild(element4); 

Теперь я хочу, чтобы элемент был список XMLElement и текст, список XMLtext. У меня возникла проблема добавления дочерних элементов элемента при использовании списка.

List<XmlElement> elements = new List<XmlElement>() {doc.CreateElement("", "type" ,""),doc.CreateElement("", "numbers" ,""),doc.CreateElement("", "one" ,""),doc.CreateElement("", "two" ,"") }; 

foreach (var elementss in elements) 
{ 
    elementss.AppendChild(elementss); 
    Console.WriteLine(elementss.ChildNodes); 
} 

уточните, насколько я прав в реализации списков в этом сценарии .. ??? любая помощь будет принята с благодарностью.

ответ

1

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

elementss.AppendChild(elementss); 

но вместо добавления новых элементов в списке, добавьте те, которые существуют:

foreach(XmlNode elements in doc.ChildNodes) 
{ 
    Console.WriteLine(elementss.ChildNodes); 
} 
+0

я получаю сообщение об ошибке относительно типажей переменных к XmlNodeList –

+0

@IamTheBoss сожалеют об этом. отредактировал ответ –

2

Linq для XML, который является именем того, что вы ищете, есть способ создания XML-документов, которые могут быть лучше отформатированы, чем старый способ System.Xml.

Может быть что-то подобное может быть проще в использовании:

var doc = new XElement("body", 
        new XElement("type"), 
         new XElement("Numbers", 
          new XElement("one", 1) 
        ) 
       ) 
      ); 
+0

спасибо .. я знал это раньше .. Я пытаюсь найти альтернативу обычным методам XmlDocument. –

+0

Linq to XML - это альтернатива, если вы не хотите идти с сериализацией. –

Смежные вопросы