当前位置: 首页 > 知识库问答 >
问题:

Xpath命名空间解析[重复]

秦焱
2023-03-14

我尝试像这样解析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个答案

和丰羽
2023-03-14

你应该用这样的东西:

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");
 类似资料:
  • 问题内容: 我花了整整一天的时间尝试从以下文档中提取一个XML节点,并且无法掌握XML命名空间的细微差别以使其正常工作。 XML文件总的来说很大,所以这是与我有关的部分: 该文档继续进行,并且从头到尾都井井有条。我正在尝试从“ documentnbr”标签(底部的三个)中提取“ number”属性。 我用于执行此操作的代码如下所示: 其中QUERY_FORM_NUMBER是我的XPath表达式,而

  • 如果我删除所有命名空间和前缀,我的XSLT转换将完美运行。 我曾尝试过几次引入名称空间,但最终总是出现某种错误或没有输出,因此我在这里寻求一些帮助和理解。 我的预期输出,缩减为命名空间和前缀,是: 再次缩减的XML输入是: 为了实现正确的命名空间转换,我需要向XSLT头中添加什么?

  • 我需要解析和打印ns4:功能部分。空手道以json格式打印它。我试着参考这个答案。但是,我得到'ERROR:'前缀'xsi'的命名空间没有被声明.'错误,如果使用建议的xPath.即, 这是我的XML:它包含许多具有不同“ns”值的部分,但我在这里给出了一个额外的内容。 这是我使用的xPath; 注意:我将上述xml保存在一个单独的文件test1中。xml。我只是在读它并解析它的值。 这就是我得到

  • 我必须解析一个XML,其中缺少xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"命名空间,所以xml看起来像这样: 但应该是这样的: type属性确保了正确的子类。 解析器是通过一个手写的xsd自动生成的$ 一个简单的解决方案是在输入XML上运行一个字符串替换(type=\\"到xsi: type=\"),但这很难看。有没有更好的解决办法?

  • 本文向大家介绍浅析TypeScript 命名空间,包括了浅析TypeScript 命名空间的使用技巧和注意事项,需要的朋友参考一下 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScr

  • XPath如何处理XML命名空间? 如果我使用 为了解析下面的XML文档,我得到了0个节点。 但是,我没有在XPath中指定名称空间(即不是路径的每个标记的前缀)。如果我没有明确告诉XPath,它怎么知道我想要哪个?我认为在这种情况下(因为只有一个名称空间),XPath可以完全忽略。但如果有多个名称空间,事情可能会变得糟糕。