gpt4 book ai didi

.net - 从 XmlReader 读取 XElement

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

我正在解析 XMPP XML 流。 XML 流的棘手之处在于开始标记直到 session 结束才会关闭,即永远不会收到完整的 DOM。

<stream:stream>
<features>
<starttls />
</features>
....
network session persists for arbitrary time
....
</stream:stream>

我需要从流中读取 XML 元素而不关心根元素是否已关闭。

理想情况下这会起作用,但它不会,我假设这是因为读者正在等待根元素被关闭。
XElement someElement = XNode.ReadFrom(xmlReader) as XElement;

下面的代码(我从 Jacob Reimers 借来的)确实有效,但我希望有一种更有效的方法,不涉及创建新的 XmlReader 和进行字符串解析。
 XmlReader stanzaReader = xmlReader.ReadSubtree();
stanzaReader.MoveToContent();
string outerStanza = stanzaReader.ReadOuterXml();
stanzaReader.Close();
XElement someElement = XElement.Parse(outerStanza);

最佳答案

你不应该需要处理字符串;你应该可以使用 XElement.Load 在子树上:

XElement someElement;
using(XmlReader stanzaReader = xmlReader.ReadSubtree()) {
someElement = XElement.Load(stanzaReader);
}

请注意,这并不是真正的"new"xml 阅读器——它与外部阅读器密切相关(但受限于一组节点)。

关于.net - 从 XmlReader 读取 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184194/

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