Я пытаюсь переформатировать свой XML-код, чтобы его было легче читать. На данный момент это выглядит следующим образом:Добавить список элементов XML
<Settings>
<Display_Settings>
<ScreenName Name="1">1</ScreenName>
<ScreenTag Tag="1">1</ScreenTag>
<LocalPosition X="1" Y="1" Z="1">0.000, 0.000, 0.000</LocalPosition>
<Width Width="0.000">0.000</Width>
<Height Height="0.000">0.000</Height>
</Display_Settings>
</Settings>
Однако то, что я хочу выглядеть так:
<Settings>
<Display_Settings>
<ScreenName Name="1">1
<ScreenTag Tag="1">1</ScreenTag>
<LocalPosition X="1" Y="1" Z="1">0.000, 0.000, 0.000</LocalPosition>
<Width Width="0.000">0.000</Width>
<Height Height="0.000">0.000</Height>
</ScreenName>
</Display_Settings>
</Settings>
Хорошо, мусор пример, но я надеюсь, что вы получите тэк; Я хочу, чтобы все мои значения, такие как тег и локальная позиция, были дочерним по имени экрана. Теперь я знаю, что сделать это было бы нормально быть следующим вызовом:
XmlNode _rootNode; // in the above i'll have set this to be Display_Settings
_rootNode.AppendChild(_screenTag);
Но я установил мой код создания XML в списке, который проводится в одном классе и заселенный в другом. Это выглядит следующим образом:
Сформировать XML
public HV_WriteXML()
{
//root node
_rootNode = _xmlDoc.CreateElement("InMo_Settings");
_xmlDoc.AppendChild(_rootNode);
_userNode = _xmlDoc.CreateElement("Display_Settings");
_rootNode.AppendChild(_userNode);
}
public void GenereateSettingsFile(List<Node> nodeList, string filePath)
{
_rootNode.RemoveChild(_userNode);
_userNode = _xmlDoc.CreateElement("Display_Settings");
_rootNode.AppendChild(_userNode);
foreach (Node n in nodeList)
{
foreach (XmlElement e in n.GenerateXML(_xmlDoc))
{
_userNode.AppendChild(e);
}
}
_xmlDoc.Save(filePath);
}
Затем, чтобы заполнить это, я делаю следующее в производном классе:
public override List<XmlElement> GenerateXML(XmlDocument _xmlDoc)
{
List<XmlElement> elementList = new List<XmlElement>();
if (nodeDictionary.ContainsKey("Name "))
{
XmlElement _screenName = _xmlDoc.CreateElement("ScreenName");
_screenName.SetAttribute("Name", (string)nodeDictionary["Name "].value);
_screenName.InnerText = (string)nodeDictionary["Name "].value;
elementList.Add(_screenName);
}
if (nodeDictionary.ContainsKey("Tag"))
{
XmlElement _screenTag = _xmlDoc.CreateElement("ScreenTag");
_screenTag.SetAttribute("Tag", (string)nodeDictionary["Tag"].value);
_screenTag.InnerText = (string)nodeDictionary["Tag"].value;
elementList.Add(_screenTag);
}
}
Теперь моя реальная Вопрос в том, как добавить свой элемент _screenTag, чтобы его дочерний элемент моего имени экрана, когда я создал создание моего xml в списке в другом классе?
XML, вы ожидаете, содержит в два раза ' 1 ' –
I4V
Да я вручную Rote, что, чтобы показать, что я пытаюсь сделать. Спасибо, что указали на это. – N0xus
Теперь у вас есть два закрывающих тега для 'ScreenName' – I4V