Получить XML-контент из XmlNodeList - PullRequest
1 голос
/ 31 января 2012

У меня есть вопрос, который может показаться очень простым, но он вызывает у меня головную боль.У меня есть этот XML-файл, который имеет несколько записей, например:

    <books>
     <book>
      <id>1</id>
      <firstCover>
       <author name="**" age="**" />
       <title name="zz" font="yyy" size="uuu"/>
      </firstCover>
      <lastCover>
      </lastCover>
     </book>
     <book>
      <id>2</id>
      <firstCover>
       <author name="**" age="**" />
       <title name="zz" font="yyy" size="uuu"/>
      </firstCover>
      <lastCover>
      </lastCover>
     </book>
</books>

Теперь, чтобы получить содержимое XML для первой обложки книги с id = 1, я делаю это:

XmlNodeList b = root.SelectNodes("/books/book[contains(id,1)]/firstCover");

Тогда мне действительно нужно было бы взять все содержимое того, что находится в первом конверте для этой книги:

<author name="**" age="**" />
<title name="zz" font="yyy" size="uuu"/>

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

1 Ответ

0 голосов
/ 31 января 2012

Полагаю, вы хотите вставить его в элемент XMLE в другом XMLDocument.

Это то, что вы ищете?

XmlDocument sourceDoc = new XmlDocument();
//This is loading the XML you present in your Question.
sourceDoc.LoadXml(xmlcopier.Properties.Resources.data);
XmlElement root = sourceDoc.DocumentElement;


XmlElement b = (XmlElement)root.SelectSingleNode("/books/book[contains(id,1)]/firstCover");

XmlDocument destDoc = new XmlDocument();
XmlElement destRoot = destDoc.CreateElement("base");
destDoc.AppendChild(destRoot);
XmlElement result = destDoc.CreateElement("firstCover");


result.InnerXml = b.InnerXml;
destRoot.AppendChild(result);


destDoc.Save("c:\\test.xml");
...