试图解析xml,但xmldocument.loadxml()正试图下载?

max*_*axp 2 c# xml parsing

我有一个字符串输入,我不知道是否是有效的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吗?

Axe*_*ger 6

请尝试以下方法:

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.