1

Web サービスからの XmlDocument があり、xml のサブセットを使用して Gridview コントロールを作成したいと考えています。残念ながら、必要のない余分なデータが含まれています。したがって、既存の xml ドキュメントのサブセットから新しい XmlDocument を作成したいと考えています。

protected void Page_Load(object sender, EventArgs e)
{
   XmlDocument xmlDoc = Object.ReturnsXmlDocument;
   XmlDocument xmlDocResults = ???  //<results><result></result></results>
}

基本的に、ルート要素として新しい XmlDocument を作成したいと考えています。以下は、元の xml ドキュメントの短縮された例です。

<?xml version="1.0" encoding="UTF-8"?>
<xml>
   <query_time>.12</query_time>
   <number_results>3</number_results>
   <results>
     <result><id>1</id></result>
     <result><id>2</id></result>
     <result><id>3</id> </result>
   </results>
</xml>

Anthony のコードは私を正しい方向に導くのに役立ちましたが、これが実際に私にとってうまくいったことです。

XmlDocument xmlResults = new XmlDocument();
    XmlDeclaration xmlDec = xmlResults.CreateXmlDeclaration("1.0", "utf-8", null);
    XmlElement rootNode = xmlResults.CreateElement("results");
    xmlResults.InsertBefore(xmlDec, xmlResults.DocumentElement);
    xmlResults.AppendChild(rootNode);

    XmlNode node = xmlDoc.GetElementsByTagName("results")[0];

    xmlResults.GetElementsByTagName("results")[0].InnerXml = node.InnerXml.ToString();
4

2 に答える 2

2

必要なのは ImportNode:-

XmlDocument xmlDoc = Object.ReturnsXmlDocument;
XmlDocument xmlResults = new XmlDocument();
xmlResults.AppendNode(xmlResults.ImportNode(xmlDoc.SelectSingleNode("/xml/results"));
于 2009-09-10T15:52:58.603 に答える
1

テストされていませんが、これはかなり近いはずです:

XPathDocument original = new XPathDocument("original.xml");
XPathNavigator navigator = original.CreateNavigator();
navigator.MoveToChild("results", "");
XmlWriter results = XmlWriter.Create("results.xml");
navigator.WriteSubtree(results);
results.Close();

そして、XmlWriter を使用して必要なことは何でも行うことができます。結果の XmlDocument をディスク上に作成しようとしているかどうかはわかりません。

于 2009-09-10T16:01:35.273 に答える