我想使用 C# 更改 xml 文件中的属性。
下面是一个示例 XML 文件
<?xml version="1.0" encoding="us-ascii"?>
<Client>
<Age>25</Age>
<Weight>50</Weight>
</Client>
我尝试使用XmlDocument
和XDocument
加载 xml 文件。它们都需要很多时间(超过 5 分钟(来加载。
这是我用来加载文件的代码:
string filePath = @"myFile.xml";
XmlDocument xmlData = new XmlDocument();
根据Google的说法,问题是XDocument
和XmlDocument
将加载XML文件的所有DTD,这就是为什么需要很多时间的原因。有解决方法吗?或者也许有任何允许我在不加载所有 DtD 的情况下更改属性的替代方案?
您可以使用 XmlReaderSettings 控制 DTD 的缓存、分析或用于验证的方式,并且仍然可以使用 XDocument。
如果您可以花时间缓存 DTD,并且更改它们不是测试的一部分,则可以接受一次打击并缓存它们。
如果时间太长,或者它们不可用,并且测试不需要它们,则可以跳过 DTD 处理。
using (var reader = XmlReader.Create(_,
new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Ignore,
ValidationType = ValidationType.None,
//DtdProcessing = DtdProcessing.Parse,
//ValidationType = ValidationType.DTD,
XmlResolver = new XmlUrlResolver
{
CachePolicy = new RequestCachePolicy(RequestCacheLevel.CacheIfAvailable),
//CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore),
}
}))
{
var doc = XDocument.Load(reader);
//…
}
XmlReaderSettings 还有许多其他属性,有时会派上用场。