首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有命名空间的C# XPATH

带有命名空间的C# XPATH
EN

Stack Overflow用户
提问于 2017-07-10 10:42:14
回答 1查看 123关注 0票数 1

这是XML文件,我想获取"cron-expression“的Xpath,实际上我想更改内部文本。我已经尝试了很多方法,但都不起作用,我只想得到直接的答案。我尝试过local-name和XmlnamespaceManager.addnamespace,但它不起作用。

代码语言:javascript
复制
<!-- This file contains job definitions in schema version 2.0 format -->

<job-scheduling-data 
xmlns="http://quartznet.sourceforge.net/JobSchedulingData" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">

  <processing-directives>
    <overwrite-existing-data>true</overwrite-existing-data>
  </processing-directives>

  <schedule>

    <job>
        <name>SampleJob</name>
        <group>SampleGroup</group>
        <description>My job</description>
        <job-type>Quartz.Server.SampleJob, Quartz.Server</job-type>
        <durable>true</durable>
        <recover>false</recover>
    </job>

    <trigger>
     <cron>
        <name>SampleTrigger</name>
        <group>SampleGroup</group>
        <description>Simple trigger to simply fire sample job</description>
        <job-name>SampleJob</job-name>
        <job-group>SampleGroup</job-group>
        <misfire-instruction>SmartPolicy</misfire-instruction>
        <cron-expression>0 * 15 * * ?</cron-expression>
      </cron>
    </trigger>
  </schedule>
</job-scheduling-data>

这是我的代码。不是工作。

代码语言:javascript
复制
 protected void Button2_Click(object sender, EventArgs e)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("D:/Chrome/Quartz.NET-2.4.1/src/Quartz.Examples/quartz_jobs.xml");
        XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
        xnm.AddNamespace("h", 
"http://quartznet.sourceforge.net/JobSchedulingData");

   XmlNode XN = doc.SelectSingleNode("h:job-scheduling-data/h:schedule/h:trigger/h:cron/h:cron-expression",xnm);


 //     XmlNode XN = doc.SelectSingleNode("/*[local-name() = 'job-scheduling-data']/*[local-name() = 'schedule']/*[local-name() = 'trigger']/*[local-name() = 'cron']/*[local-name() = 'cron-expression']");
    XN.InnerText = "0";
    doc.Save("D:/Chrome/Quartz.NET-2.4.1/src/Quartz.Examples/quartz_jobs.xml");//
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-10 15:50:21

尝试使用XDocument -(“使用System.Xml.Linq")

代码语言:javascript
复制
var doc = XDocument.Load(File.Open("D:/Chrome/Quartz.NET-2.4.1/src/Quartz.Examples/quartz_jobs.xml",FileMode.Open));

var childElements = doc.DescendantNodes().Where(n => n.NodeType == XmlNodeType.Element).Select(n => (n as XElement));
var cronElement = childElements.Where(e => e.Name.LocalName == "cron-expression").FirstOrDefault();
cronElement.SetValue("0");

doc.Save("D:/Chrome/Quartz.NET-2.4.1/src/Quartz.Examples/quartz_jobs.xml");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45003062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档