ViewBox (обратите внимание на заглавную букву "B") является чувствительным к регистру атрибутом.Изменение значения на «viewbox» может привести к тому, что элемент будет отображаться некорректно или не отображаться вообще.
HtmlAgilityPack по умолчанию использует все (X) атрибуты HTML в нижнем регистре.Как я могу предотвратить это?
Пример HTML-страницы с допустимым элементом SVG (обратите внимание на атрибут viewBox в случае с верблюдом):
<?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>
<link href="default.css" rel="stylesheet" type="text/css"/>
</head>
<body style="background-color: #000007">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 600 800">
<rect x="0" y="0" fill="#000007" width="600" height="100%"/>
<image width="600" height="800" xlink:href="images/cover.jpg" transform="translate(0 0)" />
</svg>
</body>
</html>
Для простоты, скажем, я хочудобавить тег заголовка (если отсутствует).
Private Function InsertTitleTagIfMissing(p_content As String) As String
Dim _pageContent = p_content
Dim _doc = New HtmlAgilityPack.HtmlDocument()
_doc.OptionWriteEmptyNodes = True
_doc.LoadHtml(p_content)
Dim _head = _doc.DocumentNode.SelectSingleNode("//head")
Dim _title = _head.SelectSingleNode("title")
If _title Is Nothing Then
_title = _doc.CreateElement("title")
_head.AppendChild(_title)
_pageContent = _doc.DocumentNode.OuterHtml
End If
Return _pagecontent
End Function
Private Sub LoadTestFile
Dim _exampleFileName = "C:\_testPage\cover.html"
Dim _strContents As String = String.empty
using _objReader = New StreamReader(_exampleFileName, True)
_strContents = _objReader.ReadToEnd()
_objReader.close
End Using
_strContents = InsertTitleTagIfMissing(_strContents)
System.Diagnostics.Debugger.Break()
End Sub
Вывод (т. е. значение _strContents) (обратите внимание, что атрибут viewbox теперь в нижнем регистре.):
<?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>
<link href="default.css" rel="stylesheet" type="text/css" />
<title></title>
</head>
<body style="background-color: #000007">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewbox="0 0 600 800">
<rect x="0" y="0" fill="#000007" width="600" height="100%"></rect>
<image width="600" height="800" xlink:href="images/cover.jpg" transform="translate(0 0)"></image>
</svg>
</body>
</html>