我正在尝试重新格式化我的 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 的创建时它是我的屏幕名称的子元素?