От:
AlexNN
Дата: 13.01.06 11:10
Оценка:
Есть XML:
<SH>
<EV>
<REV>
....
</REV>
</EV>
<EV>
<REV>
....
</REV>
</EV>
<EV>
<REV>
....
</REV>
</EV>
</SH>
необходимо удалить все узлы <REV> </REV> , знаю что просто , но не работал еще с XML
Пишу так:
for(int i=0;i<myDoc.GetElementsByTagName("event").Count;i++)
{
pElement = (XmlElement)myDoc.GetElementsByTagName("event")[i];
Events = pElement.GetElementsByTagName("review");
if(Events.Count!=0)
{
//MessageBox.Show(Events[0]);
pTmp = (XmlElement)Events[0];
myDoc.DocumentElement.RemoveChild(pTmp);
}
Exception: Additional information: Подлежащий удалению узел не является дочерним по отношению к этому узлу.
Всетаки должно как-то быть проще все ето.
Заранее благодарен
Re: ПРостой вопрос, помогите
Здравствуйте, AlexNN, Вы писали:
ANN>Есть XML:
ANN><SH>
ANN> <EV>
ANN> <REV>
ANN> ....
ANN> </REV>
ANN> </EV>
ANN> <EV>
ANN> <REV>
ANN> ....
ANN> </REV>
ANN> </EV>
ANN> <EV>
ANN> <REV>
ANN> ....
ANN> </REV>
ANN> </EV>
ANN></SH>
ANN>необходимо удалить все узлы <REV> </REV> , знаю что просто , но не работал еще с XML
ANN>Пишу так:
ANN>for(int i=0;i<myDoc.GetElementsByTagName("event").Count;i++)
ANN> {
ANN> pElement = (XmlElement)myDoc.GetElementsByTagName("event")[i];
ANN> Events = pElement.GetElementsByTagName("review");
ANN> if(Events.Count!=0)
ANN> {
ANN> //MessageBox.Show(Events[0]);
ANN> pTmp = (XmlElement)Events[0];
ANN> myDoc.DocumentElement.RemoveChild(pTmp);
ANN> }
ANN>Exception: Additional information: Подлежащий удалению узел не является дочерним по отношению к этому узлу.
ANN>Всетаки должно как-то быть проще все ето.
ANN>Заранее благодарен
foreach ( XmlNode node in myDoc.GetElementsByTagName("REV" ) )
node.Parent.RemoveChild(node);
Re[2]: ПРостой вопрос, помогите
От:
AlexNN
Дата: 13.01.06 12:16
Оценка:
Здравствуйте, Константин Ленин, Вы писали:
КЛ>Здравствуйте, AlexNN, Вы писали:
ANN>>Есть XML:
ANN>><SH>
ANN>> <EV>
ANN>> <REV>
ANN>> ....
ANN>> </REV>
ANN>> </EV>
ANN>> <EV>
ANN>> <REV>
ANN>> ....
ANN>> </REV>
ANN>> </EV>
ANN>> <EV>
ANN>> <REV>
ANN>> ....
ANN>> </REV>
ANN>> </EV>
ANN>></SH>
ANN>>необходимо удалить все узлы <REV> </REV> , знаю что просто , но не работал еще с XML
ANN>>Пишу так:
ANN>>for(int i=0;i<myDoc.GetElementsByTagName("event").Count;i++)
ANN>> {
ANN>> pElement = (XmlElement)myDoc.GetElementsByTagName("event")[i];
ANN>> Events = pElement.GetElementsByTagName("review");
ANN>> if(Events.Count!=0)
ANN>> {
ANN>> //MessageBox.Show(Events[0]);
ANN>> pTmp = (XmlElement)Events[0];
ANN>> myDoc.DocumentElement.RemoveChild(pTmp);
ANN>> }
ANN>>Exception: Additional information: Подлежащий удалению узел не является дочерним по отношению к этому узлу.
ANN>>Всетаки должно как-то быть проще все ето.
ANN>>Заранее благодарен
КЛ>КЛ>foreach ( XmlNode node in myDoc.GetElementsByTagName("REV" ) )
КЛ> node.Parent.RemoveChild(node);
КЛ>
После первого прохода except: список изменился
Что-то где-то я виде по этому поводу
Re[3]: ПРостой вопрос, помогите
Здравствуйте, AlexNN, Вы писали:
ANN>Здравствуйте, Константин Ленин, Вы писали:
КЛ>>Здравствуйте, AlexNN, Вы писали:
Вот код, который у меня работает без проблем
XmlNodeList pages = pMyDoc.GetElementsByTagName("..." );
foreach ( XmlNode page in pages )
{
try
{
page.ParentNode.RemoveChild( page );
}
catch ( System.ArgumentException ){}//parent node of this node already removed
}
Re[4]: ПРостой вопрос, помогите
Сорри, наврал
Надо не foreach а for
Re[5]: ПРостой вопрос, помогите
Решал похожую задачу, но не совсем похожую, поэтому наврал
КЛ> XmlNodeList pages = pMyDoc.GetElementsByTagName("...");
КЛ> for( int i = 0 ; i<pages.Count ; i++ )
КЛ> {
КЛ> pages[i].ParentNode.RemoveChild( pages[i] );
КЛ> }
Re[6]: ПРостой вопрос, помогите
foreach не позволяет изменять коллекцию во время итерирования, из-за этого эксепшн
Re[7]: ПРостой вопрос, помогите
Здравствуйте, Константин Ленин, Вы писали:
КЛ>foreach не позволяет изменять коллекцию во время итерирования, из-за этого эксепшн
Под конец рабочего дня совсем уже плохо стало
Re[8]: ПРостой вопрос, помогите
От:
AlexNN
Дата: 16.01.06 05:26
Оценка:
Здравствуйте, Константин Ленин, Вы писали:
КЛ>Здравствуйте, Константин Ленин, Вы писали:
КЛ>>foreach не позволяет изменять коллекцию во время итерирования, из-за этого эксепшн
КЛ>Под конец рабочего дня совсем уже плохо стало
Спасибо!
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить