我有一个字符串输入,我不知道是否是有效的xml.
我认为最简单的方法是包装
new XmlDocument().LoadXml(strINPUT);
Run Code Online (Sandbox Code Playgroud)
在try/catch中.
我面临的问题是,strINPUT
如果此文件的标题包含,有时是一个html文件
<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">
<html xml:lang=""en-GB"" xmlns=""http://www.w3.org/1999/xhtml"" lang=""en-GB"">
Run Code Online (Sandbox Code Playgroud)
...像许多人一样,它实际上试图建立与w3.org网址的连接,我真的不想这样做.
任何人都知道是否可以解析字符串而不试图聪明并检查外部网址?如果没有,那还有其他选择xmldocument
吗?
请尝试以下方法:
XmlDocument doc = new XmlDocument();
using (var reader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings() {
ProhibitDtd = true,
ValidationType = ValidationType.None
})) {
doc.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)
该代码创建了一个关闭DTD处理和验证的阅读器.检查良好状态仍然适用.
或者,您可以使用,XDocument.Parse
如果您可以切换到使用XDocument而不是XmlDocument
.