gpt4 book ai didi

c# - 解析几乎格式正确的 XML 片段 : how to skip over multiple XML headers

转载 作者:数据小太阳 更新时间:2023-10-29 02:31:23 26 4
gpt4 key购买 nike

我需要编写一个工具来处理以下格式不正确的 XML 片段,因为它在流的中间包含 XML 声明。

公司已经使用了很长时间的此类文件,因此没有更改格式的选项。

没有可用的源代码来进行解析,新工具的平台选择是 .NET 4 或更新版本,最好使用 C#。

片段是这样的:

<Header>
<Version>1</Version>
</Header>
<Entry><?xml version="1.0"?><Detail>...snip...</Detail></Entry>
<Entry><?xml version="1.0"?><Detail>...snip...</Detail></Entry>
<Entry><?xml version="1.0"?><Detail>...snip...</Detail></Entry>
<Entry><?xml version="1.0"?><Detail>...snip...</Detail></Entry>

使用 XmlReaderXmlReaderSettings.ConformanceLevel设置为 ConformanceLevel.Fragment , 我可以阅读完整的 <Header>元素很好。即使是 <Entry>元素开始是可以的,但是在阅读 <Detail> 时信息XmlReader它抛出一个 XmlException ,正如它在 <?xml...?> 中所读它在那个地方不期望的 XML 声明。

除了繁重的字符串操作之外,我还有什么选择可以跳过这些 XML 声明?

由于每个片段很容易超过 100 兆字节,我宁愿不要一次将所有内容加载到内存中。但这就是它所需要的,我对此持开放态度。

我得到的异常示例:

System.Xml.XmlException: Unexpected XML declaration.
The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it.
Line ##, position ##.

最佳答案

我不认为内置类会有帮助;您可能需要做一些准备工作并删除多余的 header 。如果你的样本是准确的,你可以做一个 string.Replace(badXml, "<?xml version=\"1.0\"?>, "")继续前进。

关于c# - 解析几乎格式正确的 XML 片段 : how to skip over multiple XML headers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11933440/

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