Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向自动关闭标记添加斜杠_C#_Xml_Regex - Fatal编程技术网

C# 向自动关闭标记添加斜杠

C# 向自动关闭标记添加斜杠,c#,xml,regex,C#,Xml,Regex,我需要将从页面获取的html块解析为xml。当我将大多数标记放入XmlDocument时,它们转换得很好,除了未关闭的自动关闭标记(XmlDocument不喜欢这些标记)。不幸的是,我不能在页面本身中添加这些内容,因为它是由第三方引擎生成的。因此,我必须自己添加它们。我不太擅长正则表达式,所以我需要一些关于如何将这些“/”添加到其中一个的帮助 感谢您的任何意见 我建议使用。该包能够写入XML,并将为您处理所有标记的关闭(以及CDATA包装和您可能遇到的其他棘手问题)。例如,以下是如何将HTML转

我需要将从页面获取的html块解析为xml。当我将大多数标记放入XmlDocument时,它们转换得很好,除了未关闭的自动关闭标记(XmlDocument不喜欢这些标记)。不幸的是,我不能在页面本身中添加这些内容,因为它是由第三方引擎生成的。因此,我必须自己添加它们。我不太擅长正则表达式,所以我需要一些关于如何将这些“/”添加到其中一个的帮助


感谢您的任何意见

我建议使用。该包能够写入XML,并将为您处理所有标记的关闭(以及CDATA包装和您可能遇到的其他棘手问题)。例如,以下是如何将HTML转换为XML:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

string HTML = "<HTML><body><a href ='something'> <img src='a.jpg'></a></HTML>";

doc.LoadHtml(HTML);
MemoryStream ms = new MemoryStream();
XmlWriter xml = XmlWriter.Create(ms);
doc.OptionOutputAsXml = true;
doc.Save(xml);

ms.Position = 0;
StreamReader sr = new StreamReader(ms);
Debug.WriteLine (sr.ReadToEnd());
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
字符串HTML=“”;
doc.LoadHtml(HTML);
MemoryStream ms=新的MemoryStream();
XmlWriter xml=XmlWriter.Create(ms);
doc.OptionOutputAsXml=true;
文档保存(xml);
ms.Position=0;
StreamReader sr=新的StreamReader(毫秒);
Debug.WriteLine(sr.ReadToEnd());
这将呈现输出:

<?xml version="1.0" encoding="iso-8859-1"?><html><body><a href="something"> <img src="a.jpg" /></a></body></html>

我建议使用来解析它。该包能够写入XML,并将为您处理所有标记的关闭(以及CDATA包装和您可能遇到的其他棘手问题)。例如,以下是如何将HTML转换为XML:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

string HTML = "<HTML><body><a href ='something'> <img src='a.jpg'></a></HTML>";

doc.LoadHtml(HTML);
MemoryStream ms = new MemoryStream();
XmlWriter xml = XmlWriter.Create(ms);
doc.OptionOutputAsXml = true;
doc.Save(xml);

ms.Position = 0;
StreamReader sr = new StreamReader(ms);
Debug.WriteLine (sr.ReadToEnd());
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
字符串HTML=“”;
doc.LoadHtml(HTML);
MemoryStream ms=新的MemoryStream();
XmlWriter xml=XmlWriter.Create(ms);
doc.OptionOutputAsXml=true;
文档保存(xml);
ms.Position=0;
StreamReader sr=新的StreamReader(毫秒);
Debug.WriteLine(sr.ReadToEnd());
这将呈现输出:

<?xml version="1.0" encoding="iso-8859-1"?><html><body><a href="something"> <img src="a.jpg" /></a></body></html>

HTML不是XML。不要尝试。这行不通。即使现在起作用,明天也不行。如果您想要一个示例,请尝试将以下内容解析为XML,即使它是完全有效的HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd"> 
<HTML/
  <HEAD/
    <TITLE/>/
     <P/>


HTML不是XML。不要尝试。这行不通。即使现在起作用,明天也不行。如果您想要一个示例,请尝试将以下内容解析为XML,即使它是完全有效的HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd"> 
<HTML/
  <HEAD/
    <TITLE/>/
     <P/>


对于非标准标记,您可能必须将标记名称添加到HtmlAgilityPack.HtmlNode.ElementsFlags

前。
HtmlAgilityPack.HtmlNode.ElementsFlags.Add(“spanspec”,HtmlElementFlag.Empty)

对于非标准标记,您可能必须将标记名添加到HtmlAgilityPack.HtmlNode.ElementsFlags

前。
HtmlAgilityPack.HtmlNode.ElementsFlags.Add(“spanspec”,HtmlElementFlag.Empty)

你真的在解析html吗?好的,让我们说把它转储到xml中。你真的在解析html吗?好的,让我们说把它转储到xml中。非常好而且简单的解决方案!非常好和简单的解决方案!