在一个字符串中,换行和空格变成 =""
In a string, new lines and spaces become =""
我正在尝试将从文件中读取的文本存储到字符串变量中:
using HtmlAgilityPack;
// .
// .
// some other code
// .
// .
// The following line's output is as expected. The contents of the file is printed to the console.
Console.Write( File.ReadAllText( parentFolder + @"\" + file ) );
// (storing the text in a variable)
node.InnerHtml = File.ReadAllText( parentFolder + @"\" + file );
// The output of the following line is different. The spaces and new lines become ="" (equal symbol + 2 sets of quotation marks + a space)
Console.Write( node.InnerHtml );
// example output of Console.Write( File.ReadAllText( parentFolder + @"\" + file ) );
// 'use strict';
//
// module.exports = somevariable;
// example output of Console.Write( node.InnerHtml );
// 'use="" strict';="" module.exports="somevariable;
这可能是什么原因造成的?如何解决?
你的问题是换行符(在 \n 或 \r\n 的意义上)和白色 space 一般而言,对于 HTML 没有什么意义,因为它们浏览器不会将其呈现为单个 space。因此 <div>a b</div>
将呈现为与 <div>a b</div>
相同,等等。似乎 HtmlAgilityPack 只是在整理您提供的“HTML”(实际上是 Javascript 代码)。
如果我理解正确的话,您似乎想将一些代码应用到 HTML 中的标签(例如 script
标签)。为此,我们需要将代码视为文本并构造一个文本节点:
string script = File.ReadAllText( parentFolder + @"\" + file );
HtmlTextNode textNode = doc.CreateTextNode(script);
然后我们可以将其作为子节点附加到相关节点:
node.AppendChild(textNode);
这将在您的文本文件中保留换行符,因为我们没有错误地声明它是 HTML。
P.S。如果节点中存在现有文本,您可能必须先将其清除。您可以通过调用以下代码 before .AppendChild(textNode);
:
scriptNode.RemoveAllChildren();
我正在尝试将从文件中读取的文本存储到字符串变量中:
using HtmlAgilityPack;
// .
// .
// some other code
// .
// .
// The following line's output is as expected. The contents of the file is printed to the console.
Console.Write( File.ReadAllText( parentFolder + @"\" + file ) );
// (storing the text in a variable)
node.InnerHtml = File.ReadAllText( parentFolder + @"\" + file );
// The output of the following line is different. The spaces and new lines become ="" (equal symbol + 2 sets of quotation marks + a space)
Console.Write( node.InnerHtml );
// example output of Console.Write( File.ReadAllText( parentFolder + @"\" + file ) );
// 'use strict';
//
// module.exports = somevariable;
// example output of Console.Write( node.InnerHtml );
// 'use="" strict';="" module.exports="somevariable;
这可能是什么原因造成的?如何解决?
你的问题是换行符(在 \n 或 \r\n 的意义上)和白色 space 一般而言,对于 HTML 没有什么意义,因为它们浏览器不会将其呈现为单个 space。因此 <div>a b</div>
将呈现为与 <div>a b</div>
相同,等等。似乎 HtmlAgilityPack 只是在整理您提供的“HTML”(实际上是 Javascript 代码)。
如果我理解正确的话,您似乎想将一些代码应用到 HTML 中的标签(例如 script
标签)。为此,我们需要将代码视为文本并构造一个文本节点:
string script = File.ReadAllText( parentFolder + @"\" + file );
HtmlTextNode textNode = doc.CreateTextNode(script);
然后我们可以将其作为子节点附加到相关节点:
node.AppendChild(textNode);
这将在您的文本文件中保留换行符,因为我们没有错误地声明它是 HTML。
P.S。如果节点中存在现有文本,您可能必须先将其清除。您可以通过调用以下代码 before .AppendChild(textNode);
:
scriptNode.RemoveAllChildren();