2009-09-10 5 views
1

У меня есть XmlDocument, который из веб-службы, и я хочу использовать подмножество xml для заполнения элемента управления Gridview. К сожалению, он содержит дополнительные данные, которые мне не нужны. Поэтому я хочу создать новый XmlDocument из подмножества существующего XML-документа.Создайте новый XmlDocument из существующих данных XmlDocument в Asp.Net

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> 

код Энтони помог мне точку в правильном направлении, но это то, что на самом деле работает для меня.

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(); 
+0

Вы хотите «создать новый XmlDocument с [как] как корневой элемент»? Пожалуйста, исправьте опечатку для ясности. –

+0

@GreenEggs: Matt Ball означал: вы случайно не скобки. – Residuum

ответ

2

Что вам нужно ImportNode: -

XmlDocument xmlDoc = Object.ReturnsXmlDocument; 
XmlDocument xmlResults = new XmlDocument(); 
xmlResults.AppendNode(xmlResults.ImportNode(xmlDoc.SelectSingleNode("/xml/results")); 
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 на диске или нет.

Смежные вопросы