[英]Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function. in HTMLAgilityPack
I have following contents in Html Document 我在Html文档中有以下内容
<opf:metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:title>Book Title</dc:title>
<dc:language>en-us</dc:language>
<meta name="cover" content="My_Cover" xmlns="" />
<dc:identifier id="BookId" opf:scheme="ISBN">123456789</dc:identifier>
<dc:creator>Author Name</dc:creator>
<dc:publisher>amazon.com</dc:publisher>
<dc:subject>amazon.com</dc:subject>
<dc:date>2014-02-28T00:00:00+05:30</dc:date>
</opf:metadata>
I have to change the value of <dc:date>
attribute's value to current date. 我必须将<dc:date>
属性值的值更改为当前日期。 I am using HtmlAgilityPack and the code as below 我正在使用HtmlAgilityPack和代码如下
var html1 = new HtmlAgilityPack.HtmlDocument();
html1.LoadHtml(OPFFile);
var links1 = html1.DocumentNode.SelectNodes("opf:metadata");
foreach (var link in links1)
{
link.Attributes["dc:date"].Value = DateTime.Now.ToString("yyyy-MM-dd");
}
var builder1 = new StringBuilder();
using (var writer = new StringWriter(builder))
{
html1.Save(writer);
}
OPFFile = builder1.ToString();
File.WriteAllText(@"D:\FindImageInFile\FindImageInFile\OPF.html", OPFFile);
But when i tried to convert i am getting this error Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
但当我试图转换我得到这个错误Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
How to change its value ? 如何改变它的价值?
It seems that HtmlAgilityPack doesn't support XPath containing prefix . 似乎HtmlAgilityPack不支持包含前缀的XPath 。
If your html document is well-formed (valid xml), you can use XDocument or XmlDocument , both support namespace/prefix. 如果你的html文档格式正确(有效的xml),你可以使用XDocument或XmlDocument ,它们都支持namespace / prefix。
For example, to get <cd:date>
element from sample xml above using XDocument
: 例如,要使用XDocument
从上面的示例xml获取<cd:date>
元素:
var xdoc = XDocument.Parse(OPFFile);
//or if OPFFile is file path use : XDocument.Load(OPFFile);
XNamespace dc = "http://purl.org/dc/elements/1.1/";
var date = (string)xdoc.Root.Element(dc + "date");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.