当前位置: 首页 > news >正文

XmlDocument.SelectNodes 不起作用

今天采用Xpath读取Xml节点,怎么都读不出。

问题分析:

错误代码如下:

      XmlDocument xmlD = new XmlDocument();xmlD.PreserveWhitespace = true;xmlD.LoadXml(xStr);xmlD.SelectNodes(@"job-scheduling-data/schedule/job");

经排查 dotnet 文档,发现代码编写没有问题。文档描述如下:
在这里插入图片描述

文档示例如下:
示例代码:

using System;
using System.IO;
using System.Xml;public class Sample
{public static void Main(){XmlDocument doc = new XmlDocument();doc.Load("booksort.xml");//Create an XmlNamespaceManager for resolving namespaces.XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);nsmgr.AddNamespace("bk", "urn:samples");//Select and display the value of all the ISBN attributes.XmlNodeList nodeList;XmlElement root = doc.DocumentElement;nodeList = root.SelectNodes("/bookstore/book/@bk:ISBN", nsmgr);foreach (XmlNode isbn in nodeList){Console.WriteLine(isbn.Value);}}
}

示例XML:

<?xml version="1.0"?>
<!-- A fragment of a book store inventory database -->
<bookstore xmlns:bk="urn:samples"><book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8"><title>Pride And Prejudice</title><author><first-name>Jane</first-name><last-name>Austen</last-name></author><price>24.95</price></book><book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1"><title>The Handmaid's Tale</title><author><first-name>Margaret</first-name><last-name>Atwood</last-name></author><price>29.95</price></book><book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6"><title>Emma</title><author><first-name>Jane</first-name><last-name>Austen</last-name></author><price>19.95</price></book><book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3"><title>Sense and Sensibility</title><author><first-name>Jane</first-name><last-name>Austen</last-name></author><price>19.95</price></book>
</bookstore>

自己程序采用Xml:
在这里插入图片描述

结论:问题原因:最后用文档示例与自己代码比较发现上命名空间导致**

修改后正确代码

     string xStr = File.ReadAllText(path.Trim());xStr = xStr.Replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");xStr = xStr.Replace("xmlns=\"http://quartznet.sourceforge.net/JobSchedulingData\"", "");xStr = xStr.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", "");XmlDocument xmlD = new XmlDocument();xmlD.PreserveWhitespace = true;xmlD.LoadXml(xStr);XmlNodeList jobNodeList = xmlD.SelectNodes(@"job-scheduling-data/schedule/job");
http://www.lryc.cn/news/151307.html

相关文章:

  • 部署单点elasticsearch
  • ElementUI浅尝辄止16:Tag 标签
  • Java虚拟机(JVM)框架
  • 配置Publisher 的编译规则
  • 【SpringBoot】接口实现:SpringBoot实现博客系统的文章列表页接口代码
  • 如何使用SQL系列 之 如何在SQL中插入数据
  • 【LeetCode题目详解】1281题 整数的各位积和之差 面试题 01.01. 判定字符是否唯一 python题解(作业一二)
  • 1.12 进程注入ShellCode套接字
  • MySQL 日志系统
  • LeetCode刷题---Two Sum(一)
  • 算法通关村第十七关——插入区间
  • Jenkins java8安装版本安装
  • 线上问诊:数仓开发(二)
  • Ansible自动化运维工具(三)
  • ChatGPT在创新和创业中的应用如何?
  • Log4j2 配置日志记录发送到 kafka 中
  • Linux用户与组管理(03)(八)
  • Java自定义异常
  • vscode远程调试php
  • C语言:截断+整型提升练习
  • Kubernetes技术--k8s核心技术kubectl命令行工具
  • Element浅尝辄止9:Popover 弹出框组件
  • 程序开发:构建功能强大的应用的艺术
  • (七)k8s实战-高级调度
  • HTTP/1.1协议中的八种请求
  • 面试系列 - JVM内存模型和调优详解
  • JavaScript -【第一周】
  • 高性能缓存 Caffeine 原理及实战
  • 【算法】leetcode 105 从前序与中序遍历序列构造二叉树
  • 11 | Spark计算数据文件中每行数值的平均值