[英]C# XPATH with namespaces
這是XML文件,我想為cron-expression獲取Xpath,實際上我想更改內部文本。 我嘗試了很多方法,但沒有任何效果,我只想獲得直接答案。 我已經嘗試過像local-name和XmlnamespaceManager.addnamespace
,但是它不起作用。
<!-- 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>
這是我的代碼:
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");//
}
這就是您發布的xml的工作方式。 如果可以找到該元素,則將注意保存的xml。
var doc = new XmlDocument();
doc.Load("D:/Chrome/Quartz.NET-2.4.1/src/Quartz.Examples/quartz_jobs.xml");
var namespaceManager = new XmlNamespaceManager(doc.NameTable);
namespaceManager.AddNamespace("x", "http://quartznet.sourceforge.net/JobSchedulingData");
XmlNode selectedNode = doc.SelectSingleNode("x:job-scheduling-data/x:schedule/x:trigger/x:cron/x:cron-expression", namespaceManager);
if (selectedNode != null)
{
selectedNode.InnerXml = "0";
doc.Save("D:/Chrome/Quartz.NET-2.4.1/src/Quartz.Examples/quartz_jobs.xml");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.