Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取引用另一个XML文件的XML文件_C#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 读取引用另一个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>

我试图从如下文件中读取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>
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方法来完成它。