-2
私は、XMLを持っている: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()
を試しましたが、私が必要としていたことは考えていません。
アドバイスはありますか?
コメントの例は私を助けませんでした。私は私が文書内の名前空間を持っていることを忘れて:
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");
}
}
しかし、いずれにせよラインreader.ReadToFollowing("ns8:author");
author
ノードを返しません
<doc>
****
<book>
<ns8:author>Pete</ns8:author>
<ns8:rating>4</ns8:rating>
<ns8:pages>243</ns8:pages>
</book>
<shop>
<></>
<></>
</shop>
</doc>
は、だから私はNamespaceManager使用します。
ノードタイプを確認し、それに基づいてより多くのロジックを定義できます。例:https://msdn.microsoft.com/en-us/library/cc189056(v=vs.95).aspx – Sparrow
別の例を示します。https://www.dotnetperls.com/xmlreader – Sparrow
http:// csharp.net-tutorials.com/xml/reading-xml-with-the-xmlreader-class/ – Sparrow