使用 XmlReader 获取 DTD 文件的名称
Obtain name of DTD file using XmlReader
用 XmlReader 解析一个 XML 文件,如何获取 DOCTYPE 声明的详细信息,尤其是文件名?
鉴于以下几行,我想获取信息 "sample"、"SYSTEM" 和 "sample.dtd"。
<?xml version="1.0"?>
<!DOCTYPE sample SYSTEM "sample.dtd">
<sample>
</sample>
那会给我根元素名称 "sample":
if (reader.NodeType == XmlNodeType.DocumentType)
Console.WriteLine(reader.Name);
}
DTD
可以读作名为 SYSTEM
的属性。
var dtd = reader.GetAttribute("SYSTEM");
完整示例:
var pathToXmlFile = @"c:\folder\file.xml";
using (XmlReader reader = XmlReader.Create(
pathToXmlFile,
new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse }
))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.DocumentType)
{
var dtd = reader.GetAttribute("SYSTEM"); // sample.dtd
}
}
}
用 XmlReader 解析一个 XML 文件,如何获取 DOCTYPE 声明的详细信息,尤其是文件名?
鉴于以下几行,我想获取信息 "sample"、"SYSTEM" 和 "sample.dtd"。
<?xml version="1.0"?>
<!DOCTYPE sample SYSTEM "sample.dtd">
<sample>
</sample>
那会给我根元素名称 "sample":
if (reader.NodeType == XmlNodeType.DocumentType)
Console.WriteLine(reader.Name);
}
DTD
可以读作名为 SYSTEM
的属性。
var dtd = reader.GetAttribute("SYSTEM");
完整示例:
var pathToXmlFile = @"c:\folder\file.xml";
using (XmlReader reader = XmlReader.Create(
pathToXmlFile,
new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse }
))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.DocumentType)
{
var dtd = reader.GetAttribute("SYSTEM"); // sample.dtd
}
}
}