2011-04-28 176 views
2

我只希望能夠從另一個xml文件動態編寫xml文件的內容。XML:如何將一個xml文件的內容加載到另一個文件

A.XML包含:

<?xml version="1.0"?> 
<node> 
-Include Contents of b.xml 
</node> 

B.XML包含:

<anode> 
a 
</anode> 

,有沒有辦法在XML做到這一點?

成品看起來是這樣的:

<?xml version="1.0"?> 
<node> 
    <anode> 
    a 
    </anode> 
</node> 

從評論更新:

在XML孤單。所以,當我在瀏覽器中查看 XML文件,它呈現 正確

回答

0

你能指定的語言?如果你問如何做到這一點在C#中有already been asked before

+0

單獨在xml中。所以當我在瀏覽器中查看xml文件時,它會正確渲染? – Willyam 2011-04-28 16:08:53

+0

我擔心這可能是不可能的,除非您至少不使用XSLT。也許如果你更深入地描述你的行爲,可能會有某種解決方法。 – LazyOfT 2011-04-28 19:25:11

1

當此XML文檔中的瀏覽器中打開:

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 
<node> 
-Include Contents of b.xml 
</node> 

有了這個XSLT樣式表(其他XML文檔)與stylesheet.xsl相對URI refered :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="node"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*"/> 
      <xsl:copy-of select="document('B.xml')"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

它呈現(沒有任何風格,或者與瀏覽器的默認XML樣式表)爲:

<node> 
    <anode>a</anode> 
</node> 

注意事項:處理指令。我已經使用xsl:copy-of指令,因爲我不希望與更多鈔票無限遞歸迷惑你...

2

使用外部(解析)一般實體從a.xml參考b.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE node [ 
<!ENTITY b SYSTEM "b.xml"> 
]> 
<node> 
    &b; 
</node> 

XML解析器將動態包括b.xml的內容,因爲它帕西a.xml,並會產生所需的XML。

如果您在IE中加載a.xml,它將正確呈現。

注:某些瀏覽器具有使問題從文件系統加載引用的XML文件,並擴大實體引用非常嚴格的安全策略,因此,如果您從文件系統加載a.xml它可能不會在所有的瀏覽器,但可能工作在如果您從URL加載更多瀏覽器。

相關問題