如何使用' include'创建Xml文档声明

时间:2015-07-31 10:27:43

标签: c# xml include

我之前曾设法编写代码来制作简单的XML文档,但我需要编写一个XML文档,其中包含XML' include'属性。

这是我需要复制的例子:

<?xml version="1.0" encoding="utf-8"?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
   <xi:include href="./file.xml"/>
   <data>
   </data>
</document>

网上有很多关于这个主题的信息,但在大多数情况下似乎远远超过我,主要是关于阅读和处理&#39;包括&#39;声明。我只需要将其写入XML,每次都会完全相同。

这是我尝试过的,但它显然不应该以这种方式工作,它不会让我使用空白标签。

public static void WriteXml()
    {           
        // Create the xml document in memory
        XmlDocument myXml = new XmlDocument();

        // Append deceleration
        XmlDeclaration xmlDec = myXml.CreateXmlDeclaration("1.0", "UTF-8", null);
        myXml.AppendChild(xmlDec);

        // Append root node
        XmlElement rootNode = myXml.CreateElement("document");
        rootNode.SetAttribute("xmlns:xi", "http://www.w3.org/2001/XInclude");            
        myXml.AppendChild(rootNode);

        //  Append includes statement
        XmlElement xiStatement = myXml.CreateElement("");
        xiStatement.SetAttribute("xi:include", "./file.xml");
        rootNode.AppendChild(xiStatement);

        myXml.Save(@"C:\Temp\testxml.xml");
    }

有人能建议一种简单的方法来添加include语句吗?

修改

如果我使用以下内容,它更接近我的目标,但添加href属性似乎会导致标签&#34; xi:include&#34;自动更改为&#34;包含&#34;。

public static void WriteXml()
    {
        // Create the xml document in memory
        XmlDocument myXml = new XmlDocument();

        // Append deceleration
        XmlDeclaration xmlDec = myXml.CreateXmlDeclaration("1.0", "UTF-8", null);
        myXml.AppendChild(xmlDec);

        // Append root node
        XmlElement rootNode = myXml.CreateElement("document");
        rootNode.SetAttribute("xmlns:xi", "http://www.w3.org/2001/XInclude");
        myXml.AppendChild(rootNode);

        //  Append includes statement
        XmlElement xiStatement = myXml.CreateElement("xi:include");
        xiStatement.SetAttribute("href", "./file.xml");
        rootNode.AppendChild(xiStatement);

        myXml.Save(@"C:\Temp\testxml.xml");
    }

1 个答案:

答案 0 :(得分:2)

首先,如前所述,您的library(ggmap) maparea<-get_map("London",zoom=12,source="google",maptype="roadmap") 元素include属性,因此您可以按如下方式创建:

href

但更简单的解决方案是使用LINQ to XML,这是一个更具表现力的API。有很多方法可以使用它,一种方法是:

var doc = new XmlDocument();

var declaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(declaration);

var root = doc.CreateElement("document");
root.SetAttribute("xmlns:xi", "http://www.w3.org/2001/XInclude");
doc.AppendChild(root);

var include = doc.CreateElement("xi", "include", "http://www.w3.org/2001/XInclude");
include.SetAttribute("href", "./file.xml");
root.AppendChild(include);

var data = doc.CreateElement("data");
root.AppendChild(data);