Xpath名称空间解析

时间:2017-03-20 22:38:09

标签: c# .net xml xpath

我尝试解析像这样的xml:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("file.xml");
XmlNode jobNode = xmlDoc.SelectSingleNode("//job-data/schedule/job");

我尝试解析这个xml:

<?xml version="1.0" encoding="utf-8" ?>
<job-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 version="2.0">
<schedule>
    <job>
        <name>ExampleJob</name>
    </job>
</schedule>
</job-data>

但是我的jobNode总是空的。 如果我将我的xml更改为它,它可以工作:

<?xml version="1.0" encoding="utf-8" ?>
<job-data>
<schedule>
    <job>
        <name>ExampleJob</name>
    </job>
</schedule>
</job-data>

1 个答案:

答案 0 :(得分:2)

你应该使用这样的东西:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsmgr.AddNamespace("ns", "http://quartznet.sourceforge.net/JobSchedulingData");

XmlNode jobNode = xmlDoc.SelectSingleNode("//ns:job-data/ns:schedule/ns:job");