我有一个xml实体的列表,我想支持和读取而不处理。因此,我创建一个自定义文档类型,我注册这些实体:
xml = "<!DOCTYPE doctypeName [\r\n <!ENTITY nbsp \"LINE BREAK\">\r\n]> " + xml;
然后我相应地设置实体处理:
reader.EntityHandling = EntityHandling.ExpandCharEntities;
这很好用。但是我也必须读取片段。但是当我尝试用同样的方法读取片段时,我得到了下面的错误:
// System.Xml.XmlException: 'Unexpected DTD declaration. Line 1, position 3.'
var reader = XmlReader.Create(new StringReader(xxml2), new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Parse,
ConformanceLevel = ConformanceLevel.Fragment,
}, context);
这个片段是在普通阅读器的阅读过程中使用的,所以如果有某种上下文可以重用或者有一个子阅读器,这也可以工作。
是否有一个选项可以同时使用片段和文档类型?
1条答案
按热度按时间dsekswqp1#
确实有一个类https://learn.microsoft.com/en-us/dotnet/api/system.xml.xmlparsercontext?view=net-7.0,你可以创建并传递到
XmlReader.Create()
上,例如使用像https://learn. microsoft. com/de-de/dotnet/api/system. xml. xmlreader. create?view = net-7.0 #system-xml-xmlreader-create(system-string-system-xml-xmlreadersettings-system-xml-xmlparsercontext)这样的重载。最小示例: