gpt4 book ai didi

.net - XmlReader 无法识别 EndElement

转载 作者:行者123 更新时间:2023-12-02 00:30:22 25 4
gpt4 key购买 nike

我有一个没有格式的 XML 字符串,类似于:

<SomeTag><Tag>tag 1</Tag><Tag>tag 2</Tag><Tag>tag 3</Tag><Tag>tag 4</Tag></SomeTag>

当我运行这段代码时:

using (XmlReader reader = XmlReader.Create(stream))
{
reader.MoveToContent();

while (reader.Read())
{
if ((reader.NodeType == XmlNodeType.Element) && (string.Compare(reader.Name, name, StringComparison.InvariantCultureIgnoreCase) == 0))
{
var element = (XElement)XNode.ReadFrom(reader);
yield return element;
}
}
reader.Close();
}

它只将节点的标签1和标签3识别为Element,将标签2和标签4识别为TextNodes。

为什么?

我该怎么做才能修复它?

仅供引用,如果我在每个标签后添加带有换行符的格式,它会按预期工作,将所有标签识别为元素。但是,我无法控制提供给我的 XML。

最佳答案

怀疑 问题是 XNode.ReadFrom 已经将阅读器定位在“下一个”元素的开头 - 然后您调用 Read ,它正在元素上移动并移动到下一个节点。

虽然这只是一个猜测 - 这是 XmlReader 使之变得棘手的事情 :( 尝试使 Read 调用以您是否刚刚调用 为条件ReadFrom。像这样的东西:

using (XmlReader reader = XmlReader.Create(stream))
{
reader.MoveToContent();

while (!reader.EOF)
{
if (reader.NodeType == XmlNodeType.Element &&
reader.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase))
{
var element = (XElement)XNode.ReadFrom(reader);
yield return element;
}
else
{
reader.Read();
}
}
}

关于.net - XmlReader 无法识别 EndElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150985/

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