2

我正在从我的存储文件夹中解析一个 HTML 文件。我将解析以获取一些值。

StorageFile store = await appfolder.GetFileAsync("01MB154.html");
string content = await FileIO.ReadTextAsync(store);
XmlDocument doc = new XmlDocument();
doc.LoadXml(content);
XmlNodeList names = doc.GetElementsByTagName("img");

我在 LoadXml(content) 行中遇到异常。

“在 IMG.exe 中发生了 'System.Exception' 类型的异常,但未在用户代码中处理,附加信息:来自 HRESULT 的异常:0xC00CE584”

我试过这个答案但还没有为我工作。关联

这是我的 HTML 文件的一部分。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<meta name="generator" content="Web Books Publishing" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Main Text</title>
</head>
<body>
<div>
<div class="figcenter">
<img src="images/img2.jpg"   alt="Cinderella" title="" />
</div>

我检查了一些我想使用的文件,但还不行。我想知道还有其他方法可以获取 HTML 值。

谢谢,

4

1 回答 1

3

根据W3Schools ,您的 HTML 格式不正确

试试这个

StorageFile store = await appfolder.GetFileAsync("01MB154.html");
string content = await FileIO.ReadTextAsync(store);
XmlDocument doc = new XmlDocument();

XmlLoadSettings loadSettings = new XmlLoadSettings();
loadSettings.ProhibitDtd = false;

doc.LoadXml(content, loadSettings);
XmlNodeList names = doc.GetElementsByTagName("img");

更新 1

这是我的工作代码

StorageFile store = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync("01MB154.html");
string content = await FileIO.ReadTextAsync(store);
XmlDocument doc = new XmlDocument();
XmlLoadSettings loadSettings = new XmlLoadSettings();
loadSettings.ProhibitDtd = false;
doc.LoadXml(content, loadSettings);
XmlNodeList names = doc.GetElementsByTagName("img");

更新 2

替换&nbsp;&amp;nbsp;,它对我有用。

于 2013-05-25T04:22:11.133 回答