如何在另一个中显示一个xml文件。在另一个XML中引用XML

时间:2016-08-18 10:17:00

标签: xml linq-to-xml cross-reference

我有一个名为person.xml的XML文件

我想在display.xml

中显示person.xml的内容

因此,如果我将来编辑person.xml的内容,那么它也会反映在display.xml上。

我想要对xml进行引用。

例如,person.xml由

组成

person.xml:

<person>
    <name>John</name>
    <age>18</age>
    <hair>Brown</hair>
    <eyes>Blue</eyes>
</person>

那么display.xml的代码应该是什么

我目前的display.xml为

<group>
  <personlink xlink:href="person.xml" xlink:show="embed" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</group>

1 个答案:

答案 0 :(得分:0)

您可以使用DTD中声明的外部实体,如下所示:

<!DOCTYPE group [
  <!ENTITY person SYSTEM "person.xml">
]>
<group>
  &person;
</group>

然后在您的.NET代码中,您需要使用XmlReaderSettings设置XmlReader以允许DTD并解析URI:

        XDocument doc;
        using (XmlReader xr = XmlReader.Create("../../display.xml", new XmlReaderSettings() { DtdProcessing = DtdProcessing.Parse, XmlResolver = new XmlUrlResolver() }))
        {
            doc = XDocument.Load(xr);
        }
        Console.WriteLine(doc);

结果是

<!DOCTYPE group [
  <!ENTITY person SYSTEM "person.xml">
]>
<group>

<person>
  <name>John</name>
  <age>18</age>
  <hair>Brown</hair>
  <eyes>Blue</eyes>
</person>

</group>