Из XmlDocument в XmlReader.Net
После совета пользователя, который ответил на мой вопрос, я перехожу к преобразованию кода XmlDocument в код XmlReader, но у меня возникают некоторые проблемы.
Это XML (сгенерированный на странице php-mysql)
<row>
<idLink>64</idLink>
<idHost>3</idHost>
<url>http://www.google.com</url>
</row>
<row>
<idLink>68</idLink>
<idHost>4</idHost>
<url>http://www.bing.com</url>
</row>
..... until about 10000 rows
Это мой код XmlDocument:
xmlDoc.Load("http://www.myUrl.com/list.php");
if (xmlDoc.DocumentElement != null){
foreach (XmlNode node in xmlDoc.DocumentElement)
{
if (node.Name == "row")
{
list.Add(new Links {
idLink = Convert.ToInt32(node.ChildNodes[0].InnerText),
idHost = Convert.ToInt32(node.ChildNodes[1].InnerText),
url = node.ChildNodes[2].InnerText });
}
}
return list;
Теперь у меня есть некоторые проблемы с преобразованием в XmlReader, я пробовал много кода, но я не могу с этим справиться.
using (XmlReader reader = new XmlTextReader("http://myUrl.com/list.php"))
{
if (reader.NodeType == XmlNodeType.Element)
?????
Ответы
Ответ 1
Если вы выполняете операции только для чтения в XML файле, вы можете использовать XmlReader
, но, как указывает @Marc Gravell, это сложно.
В этой ситуации я создам класс, который обертывает XPathDocument
с помощью XmlReader
. Затем я создаю XPathNavigator
для чтения данных. Вот пример:
public class MyXmlReader
{
public MyXmlReader(string xml)
{
StringReader sReader = new StringReader(xml);
XPathDocument xml = new XPathDocument(XmlReader.Create(sReader));
xmlNav = xml.CreateNavigator();
}
private XPathNavigator xmlNav = null;
public MyDataModel ReadMyDataModel()
{
MyDataModel model = new MyDataModel();
model.Read(xmlNav);
return model;
}
}
Как показано выше, считывание данных затем может быть инкапсулировано в связанную объектную модель. Вы можете увидеть некоторые подробности в моем ответе на этот вопрос:
Как я могу манипулировать XML-документом одним родительским элементом за раз?
Ответ 2
Ты можешь использовать
XmlReader xmlReader = new XmlNodeReader(xmlDoc);
Смотрите: http://blog.jongallant.com/2007/01/convert-xmldocument-to-xmlreader.html