简体   繁体   English

需要命名空间管理器或XsltContext。 此查询具有前缀,变量或用户定义的函数。 在HTMLAgilityPack中

[英]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),你可以使用XDocumentXmlDocument ,它们都支持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.

相关问题 需要HtmlAgilityPack命名空间管理器或XsltContext。 该查询具有前缀,变量或用户定义的函数 - HtmlAgilityPack Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function System.Xml.XPath.XPathException:&#39;需要名称空间管理器或XsltContext。 该查询具有前缀,变量或用户定义的功能。” - System.Xml.XPath.XPathException: 'Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.' 需要命名空间管理器或 XsltContext。 此查询具有前缀、变量或用户定义的函数 - Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function 需要命名空间管理器或 XsltContext。 此查询具有前缀、变量或用户定义的函数 - Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function 调用格式编号 XPath 函数时,收到错误消息:“需要命名空间管理器或 XsltContext。” - When calling format-number XPath function, I receive error: “Namespace Manager or XsltContext needed.” 需要命名空间管理器或 XsltContext - Namespace Manager or XsltContext needed 引发异常:需要名称空间管理器或XsltContext - Throw an exception: Namespace Manager or XsltContext needed Xpath无法解析XML:需要名称空间管理器或XsltContext - Xpath cannot parse XML : Namespace manager or XsltContext needed 读取XML时发生异常-“需要名称空间管理器或XsltContext” - Exception while reading XML - “Namespace Manager or XsltContext needed” 提供了XmlNamespaceManager,但仍然需要“Namespace Manager或XsltContext” - XmlNamespaceManager provided, but still get “Namespace Manager or XsltContext needed”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM