【问题标题】:Create new XmlDocument from existing XmlDocument Data in Asp.Net从 Asp.Net 中的现有 XmlDocument 数据创建新的 XmlDocument
【发布时间】:2009-09-10 15:46:37
【问题描述】:

我有一个来自 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();

【问题讨论】:

  • 您想“创建一个以 [what] 作为根元素的新 XmlDocument”?为清楚起见,请更正错字。
  • @GreenEg​​gs:Matt Ball 的意思是:你不小心没有括号。

标签: c# asp.net xml xmldocument


【解决方案1】:

你需要的是 ImportNode:-

XmlDocument xmlDoc = Object.ReturnsXmlDocument;
XmlDocument xmlResults = new XmlDocument();
xmlResults.AppendNode(xmlResults.ImportNode(xmlDoc.SelectSingleNode("/xml/results"));

【讨论】:

    【解决方案2】:

    未经测试,但这应该非常接近:

    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。

    【讨论】:

      猜你喜欢
      • 2012-07-09
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2012-10-05
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多