我正在尝试读取xml文档,但XmlReader.ReadToNextSibling不能像在此MSDN文档中所宣传的那样工作
这是一个控制台示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
namespace ConsoleTestApp
{
class Program
{
static void Main(string[] args)
{
string xmlText = "<xmlRoot><group><item>Item 1</item><item>Item 2</item></group><group><item>Item 3</item><item>Item 4</item></group></xmlRoot>";
using (XmlReader reader = XmlReader.Create(new StringReader(xmlText)))
{
reader.ReadToFollowing("item");
do
{
Console.WriteLine("Item: {0}", reader.ReadInnerXml());
} while (reader.ReadToNextSibling("item"));
}
Console.WriteLine("Press any key to continue...");
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只输出一个项目:
货号:第1项
谁知道我怎么能让这个工作?
请不要建议使用DOM模型(XmlDocument).我不能,因为这些xml文件来自不同的来源,并且可以有许多不同的命名空间,这是一个巨大的麻烦.我需要让这个工作.
这是因为ReadInnerXml也推动了读者.因此,当你到达第一个时ReadToNextSibling,你就被置于第2项,并且没有下一个兄弟.
此代码将同时读取您的项目:
string xmlText = "<xmlRoot><group><item>Item 1</item><item>Item 2</item></group><group><item>Item 3</item><item>Item 4</item></group></xmlRoot>";
using (XmlReader reader = XmlReader.Create(new StringReader(xmlText)))
{
reader.ReadToFollowing("item");
do
{
Console.WriteLine("Item: {0}", reader.ReadInnerXml());
} while (reader.Name == "item");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2864 次 |
| 最近记录: |