[英]How to read xml document with XmlReader?
我有一個 xml:
<doc>
****
<book>
<author>Pete</author>
<rating>4</rating>
<pages>243</pages>
</book>
<shop>
<></>
<></>
</shop>
</doc>
我試着用 XmlReader 閱讀它:
using (XmlReader reader = XmlReader.Create(stream))
{
reader.MoveToContent();
//read some elements
reader.ReadToFollowing("book");
}
但是當我遇到元素book
我不知道如何進入內部,我的意思是如何閱讀author
, rating
等? 以及如何再次移動到上層以讀取shop
元素。
我試過ReadToDescendant()
但不認為這是我需要的。
任何建議?
評論中的例子對我沒有幫助。 我忘了我在文檔中有一個命名空間:
<doc>
****
<book>
<ns8:author>Pete</ns8:author>
<ns8:rating>4</ns8:rating>
<ns8:pages>243</ns8:pages>
</book>
<shop>
<></>
<></>
</shop>
</doc>
所以我使用 NamespaceManager:
var nsmgr = new XmlNamespaceManager(reader.NameTable);
nsmgr.AddNamespace("ns8", "namespace uri1");
nsmgr.AddNamespace("ns6", "namespace uri2");
並閱讀文檔:
using (XmlReader reader = XmlReader.Create(stream))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
reader.ReadToFollowing("book");
reader.ReadToFollowing("ns8:author");
}
}
但無論如何 line reader.ReadToFollowing("ns8:author");
不返回author
節點。
在ReadToFollowing
方法中指定正確的命名空間。
using (XmlReader reader = XmlReader.Create(stream))
{
reader.ReadToFollowing("book");
reader.ReadToFollowing("author", "uri1");
var author = reader.ReadElementContentAsString();
Console.WriteLine(author);
reader.ReadToFollowing("rating", "uri1");
var rating = reader.ReadElementContentAsInt();
Console.WriteLine(rating);
// and so on
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.