【发布时间】:2015-04-25 22:36:48
【问题描述】:
我有一个以 xml 元素开头的字符串,然后在元素结束后继续使用常规文本。
像这样:
<SomeElement SomeAtt="SomeValue"><SomeChild/></SomeElement> More random text.
我想将第一部分解析为 XElement,然后将以下文本分离为字符串变量。 我考虑过只计算尖括号,但有合法的 XML 会让我失望。 我更喜欢使用开箱即用的解析器。 我尝试过使用 XmlReader 和 XElement.Parse 方法。我希望它们在读取元素后停止,而不是因为 Xml 元素后出现意外文本而引发异常。到目前为止,我一直无法做到。 XmlReader 有一个 ReadSubtree 方法,但我无法让它工作。
有什么想法吗?
编辑
- 附加信息:随机文本可能包含尖括号。
- 附加信息:从概念上讲,XML 可能包含 xml cmets,其中可能包含不匹配的括号。因此,解决方案最好考虑到这一点,以便普遍适用,但在我的具体情况下不是必需的。
【问题讨论】:
-
您的 XML 中有错误,这就是 XMLreader 给出异常的原因。您应该修复错误,而不是寻找解决这些错误的方法。
-
您现在可以使用 XElement.Parse 读取文件吗?您需要其他帮助吗?
-
不,XElement.Parse 会抱怨“更多随机文本”。部分。具体来说,它会抛出异常“根级别的数据无效”。如果你看到 har07 的答案的评论部分,可能会更清楚问题是什么。
-
我的意思是“不”,如“我无法使用 XElement.Parse 阅读文本”。并且“是的,如果你有一个好的解决方案,我想听听”。
标签: c# xml linq-to-xml