2012-02-09 20 views
-1

Мне нужно сделать автомобиль дочерним узлом дорожки. Я посмотрел онлайн и попробовал несколько разных способов, но я не могу заставить его работать правильно.Как добавить новый дочерний узел к существующему дочернему узлу

Вот мой файл xml, который я генерирую.

<RTDX msgid="3642728b-b75c-4196-9fad-5c4e882c3a9d" msgtime="0001-01-01 00:00:00.000" xmlns="http://www.aps-technology.com"> 
    <EventTime>2012-02-09 19:38:13.802</EventTime> 
    <Track name="P7E Switch" /> 
    <Car name="CSXT8423" sequence="4" orientation="A" axles="1" /> 
</RTDX> 

однако это ожидаемый формат.

<RTDX msgid="3642728b-b75c-4196-9fad-5c4e882c3a9d" msgtime="0001-01-01 00:00:00.000" xmlns="http://www.aps-technology.com"> 
    <EventTime>2011-12-07 05:00:03.579</EventTime> 
    <Track name="P7E Switch"> 
     <Car name="CSXT8423" sequence="1" orientation="A"/> 
    </Track> 
</RTDX> 

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

protected override void SaveApsXml(System.Xml.XmlNode node) 
{ 
    base.SaveApsXml(node);    
    node.AppendNewChild("EventTime").SetElementText(this.EventTime.ToString(ApsMessage.DateTimeFormat)); 
    node.AppendNewChild("Track").SetAttribute("name", this.Track); //Pretty sure this is whats causing the problem 
    this.SequenceCar.SaveApsXml(node.AppendNewChild("Car")); 
} 

Для справки это AppendNewChild метод

public static XmlNode AppendNewChild(this XmlNode node, string name) 
{ 
    XmlNode child = node.OwnerDocument.CreateElement(name, node.NamespaceURI); 
    return node.AppendChild(child); 
} 

ответ

1

Это, вероятно, потому что вы Добавляя автомобиль к неправильному узла.

protected override void SaveApsXml(System.Xml.XmlNode node) 
{ 
    base.SaveApsXml(node);    
    node.AppendNewChild("EventTime").SetElementText(this.EventTime.ToString(ApsMessage.DateTimeFormat)); 
    var track = node.AppendNewChild("Track"); 
    track.SetAttribute("name", this.Track); 
    this.SequenceCar.SaveApsXml(track.AppendNewChild("Car")); 
} 

Также отметим, что предполагаемое форматом, например, неправилен XML (имя корневого элемента не соответствует - RTDX против RTDT).

+0

Огромное вам спасибо, что, казалось, обратился к моей проблеме! Что касается несоответствующего формата, я случайно разместил старый формат. Сейчас я обновлю его. – ensantos91

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