C# 读取引用另一个XML文件的XML文件
我试图从如下文件中读取XML:C# 读取引用另一个XML文件的XML文件,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我试图从如下文件中读取XML: var XmlData = XElement.Load(@"D:\test.xml"); <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE document [ <!ENTITY systems SYSTEM 'file:D:\systems.xml'> ]> <Root> &systems; <Servers>
var XmlData = XElement.Load(@"D:\test.xml");
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document [ <!ENTITY systems SYSTEM 'file:D:\systems.xml'> ]>
<Root>
&systems;
<Servers>
<Server>Server1</Server>
<Server>Server2</Server>
</Servers>
</Root>
test.xml
引用另一个xml文件,如:
var XmlData = XElement.Load(@"D:\test.xml");
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document [ <!ENTITY systems SYSTEM 'file:D:\systems.xml'> ]>
<Root>
&systems;
<Servers>
<Server>Server1</Server>
<Server>Server2</Server>
</Servers>
</Root>
然而,我在XmlData
中得到的是
<Root>
<Servers>
<Server>Server1</Server>
<Server>Server2</Server>
</Servers>
</Root>
服务器1
服务器2
阅读
test.xml
时,如何包含systems.xml
的内容请尝试以下操作:
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
XmlReader reader = XmlReader.Create("test.xml", settings);
var XmlData = XElement.Load(reader);
谢谢你的建议。所以关键是DTD处理,我通过将reader对象传递给XElement的Load方法来完成它。