1

非常に単純に思えるかもしれませんが、それは私に頭痛の種を与えています。次のような複数のエントリを持つこの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>

ここで、id = 1の本の最初の表紙のXMLコンテンツを取得するために、次のようにします。

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

次に、その本のfirstCoverの内容全体を実際に取得する必要があります。

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

XmlElementに挿入します。これは私が立ち往生しているところです。XmlNodeListのforeachループでそれを実行できることは知っていますが、もっと簡単な方法はありますか?

4

1 に答える 1

0

別の XMLDocument の XMLElement に実際に挿入する必要があると思います。

これはあなたが探しているものですか?

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");
于 2012-01-31T05:41:25.960 に答える