gpt4 book ai didi

C# LINQ TO XML - 从 DTD header 中删除 "[]"个字符

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:42 27 4
gpt4 key购买 nike

我最近在 VS2010 中创建了一个小型 C# windows 窗体/LINQ to XML 应用程序,它完全按照它应该做的,除了一件事:它在 DOCTYPE 标记的末尾添加了“[]”,这显然是导致遗留系统拒绝的文件。这是之前和之后:

之前

<!DOCTYPE ichicsr SYSTEM "http://www.accessdata.fda.gov/xml/icsr-xml-v2.1.dtd">

之后

<!DOCTYPE ichicsr SYSTEM "http://www.accessdata.fda.gov/xml/icsr-xml-v2.1.dtd"[]>

这些字符是在使用 .Save 函数将文件保存在程序中后添加的。该程序允许选择一个 .xml 文件,然后通过删除某些标签来“清理”它,然后保存它。进程开始时,文件的 DOCTYPE 中没有“[]”。保存后,他们会这样做。 LINQ to XML 添加这些吗?

有什么方法可以防止程序添加这些字符吗?

最佳答案

显然,当XDocument解析包含文档类型声明的 XML 文档,如果不存在,则会自动插入一个空的“内部子集”。 (内部子集是[]<!DOCTYPE>包围的部分)。

结果是格式正确的 XML。但是,如果您的遗留系统无法处理它,您可以通过设置 XDocumentType.InternalSubset 从 DTD 中删除内部子集。属性(property)null :

XDocument document = ...;
if (document.DocumentType != null)
document.DocumentType.InternalSubset = null;

关于C# LINQ TO XML - 从 DTD header 中删除 "[]"个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12358061/

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