今天采用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:
<bookstore xmlns:bk="urn:samples">
<book genre="novel" publicationdate="1997" bk:ISBN="1-861001-57-8">
<title>Pride And Prejudicetitle>
<author>
<first-name>Janefirst-name>
<last-name>Austenlast-name>
author>
<price>24.95price>
book>
<book genre="novel" publicationdate="1992" bk:ISBN="1-861002-30-1">
<title>The Handmaid's Taletitle>
<author>
<first-name>Margaretfirst-name>
<last-name>Atwoodlast-name>
author>
<price>29.95price>
book>
<book genre="novel" publicationdate="1991" bk:ISBN="1-861001-57-6">
<title>Emmatitle>
<author>
<first-name>Janefirst-name>
<last-name>Austenlast-name>
author>
<price>19.95price>
book>
<book genre="novel" publicationdate="1982" bk:ISBN="1-861001-45-3">
<title>Sense and Sensibilitytitle>
<author>
<first-name>Janefirst-name>
<last-name>Austenlast-name>
author>
<price>19.95price>
book>
bookstore>
自己程序采用Xml:
string xStr = File.ReadAllText(path.Trim());
xStr = xStr.Replace("", "");
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");