现有如下代码,用xPath来提取XmlDocument中的一个节点:
XmlDocument xmlDocument=new XmlDocument();
xmlDocument.Load("D:\\Category1.xml");
XmlElement rootNode=xmlDocument.DocumentElement;
XmlNode mapNode=rootNode.SelectSingleNode("//DATA/MAP");
MessageBox.Show(mapNode.Name);
当Category1.xml头部包含dtd定义:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SMART_DOCUMENT SYSTEM "dtd/SMART_DOCUMENT_V_1_1_RC5.dtd">
的时候,rootNode.SelectSingleNode("//DATA/MAP")返回为null;
当Category1.xml头部没有dtd定义的时候,能够正常的返回一个MAP节点。谁有好的解决方案,使的xml文档中,包含dtd的定义,也可以用xPath在XmlDocument对象中选择对象?
高分奉送,不够再补,十万火急,在线热等。
非常感谢!
XmlDocument xmlDocument=new XmlDocument();
xmlDocument.Load("D:\\Category1.xml");
XmlElement rootNode=xmlDocument.DocumentElement;
XmlNode mapNode=rootNode.SelectSingleNode("//DATA/MAP");
MessageBox.Show(mapNode.Name);
当Category1.xml头部包含dtd定义:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SMART_DOCUMENT SYSTEM "dtd/SMART_DOCUMENT_V_1_1_RC5.dtd">
的时候,rootNode.SelectSingleNode("//DATA/MAP")返回为null;
当Category1.xml头部没有dtd定义的时候,能够正常的返回一个MAP节点。谁有好的解决方案,使的xml文档中,包含dtd的定义,也可以用xPath在XmlDocument对象中选择对象?
高分奉送,不够再补,十万火急,在线热等。
非常感谢!
解决方案 »
- C# 发送Email如何能不通过服务器中转直接投递?
- UDPClient + 多线程 + windows服务程序
- c# 查找Ctrl+F11快捷键被占用
- 请教点关于对Excel的操作问题。。。。
- 当前上下文中不存在_continue和_serialPort 各位大虾请赐教啊
- 散分~~终于接分接到4裤了~~嘿嘿~(讨论一下Duwamith的结构,随便讨论)
- 各位兄弟姐妹们,那位有网页分析方面的资料或代码???提供一些,谢谢!
- 我打印多份图像(我只在一页上画出一张图)让打印机连续打印,如我设定成6张就连续打印6张(现在的方法是我连续发Print(),可是打印机会停一下),代码如何写呀、、
- 如何实现发送net send消息?
- 怎样求出一个数据库中最后一条记录中某个字段的值?
- 各位高手,小女子有问题请教!在线等。。。
- 请问如何判断内置浏览器可以通过GoBack()和GoForward()来“后退、前进”?
问题是要打开的xml是客户送过来的,不能要求客户改用xsd的啊。狂郁闷。
<!DOCTYPE book SYSTEM 'books.dtd'>
<book ISBN = '1-861001-57-5'>
<title>&h;</title>
<price>19.95</price>
<misc>&h;</misc>
</book>2. books.dtd (in the same directory as TestDTD.xml)<!ELEMENT book (title,price,misc)>
<!ATTLIST book
genre CDATA "novel"
ISBN CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT misc (#PCDATA)>
<!ENTITY h "hardcover">
<!ENTITY p "paperback">
3. TestDTD.csusing System;
using System.IO;
using System.Xml;
using System.Net;public class Sample { public static void Main() { // Supply the credentials necessary to access the DTD file stored on the network.
// XmlUrlResolver resolver = new XmlUrlResolver();
// resolver.Credentials = CredentialCache.DefaultCredentials; // Create and load the XmlDocument.
XmlDocument doc = new XmlDocument();
//doc.XmlResolver = resolver; // Set the resolver.
doc.Load("TestDTD.xml"); // Display the entity replacement text which is pulled from the DTD file.
XmlNode node = doc.DocumentElement.SelectSingleNode("//title");
if (node == null)
Console.WriteLine("null");
else
Console.WriteLine(node.InnerText);
}
} // End class4. output:
hardcover