gpt4 book ai didi

c# - XmlReader:不读取同级子元素

转载 作者:太空宇宙 更新时间:2023-11-03 23:01:10 26 4
gpt4 key购买 nike

代码如下:

string str = "<A><B>Apple</B><B>Mango</B></A>";

using (XmlReader xmlReader = XmlReader.Create(new StringReader(str)))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "B")
{
Console.WriteLine(xmlReader.ReadElementContentAsString());
}
}
}

输出:

苹果

预期输出:

苹果
芒果

你能帮我理解这段代码有什么问题吗?我如何获得预期的输出?

注意:我想用XmlReader来实现

最佳答案

ReadElementContentAsString 读取并让读者前进到下一个元素。
因此,对于 while 中的 Read,您将跳过下一个 B 元素。

改为使用 Value 属性。

using (XmlReader xmlReader = XmlReader.Create(new StringReader(str)))
{
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "B")
{
xmlReader.Read(); // Next read will contain the value
Console.WriteLine(xmlReader.Value);
}
}
}

如果您希望显示外部 xml,则使用方式略有不同:

bool hasMore = xmlReader.Read();
while (hasMore)
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "B")
{
Console.WriteLine(xmlReader.ReadOuterXml());
}
else hasMore = xmlReader.Read();
}

关于c# - XmlReader:不读取同级子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43027716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com