如何动态地将架构位置和XSI添加到XML文件

时间:2011-12-16 07:17:26

标签: c# asp.net xml

大家好我正在创建一个动态生成XML文件的应用程序。在此,我想将schemalocationXSI添加到XML Root我该怎么做。我想添加以下内容

xmlns="http://www.irs.gov/efile"

xsi:SchemaLocation="http://www.irs.goc/efile ReturnData941.xsd"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"

这是我动态生成的示例XML代码

XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);

doc.AppendChild(docNode);

XmlNode returnData = doc.CreateElement("ReturnData");
XmlAttribute documnetCount = doc.CreateAttribute("documentCount"); // after this i would like to add that schema
returnData.Attributes.Append(documnetCount);

所以我应该按照以下方式获取XML

<?xml version="1.0" encoding="UTF-8"?>
<ReturnData documentCount=""  xsi:SchemaLocation="http://www.irs.goc/efile ReturnData941.xsd" xmlns="http://www.irs.gov/efile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" />

2 个答案:

答案 0 :(得分:3)

我认为你只需要添加一个像

这样的属性
        XmlAttribute attr = doc.CreateAttribute("xsi", "schemaLocation", " ");
        attr.Value = "http://www.irs.goc/efile ReturnData941.xsd";
        returnData.Attributes.Append(attr);

答案 1 :(得分:0)

我想知道这是否是接近事物的最佳方式?许多验证API允许您独立指定架构位置和实例文档位置,这可能比在实例中存储架构位置更有效。

一般来说,我对xsi:schemaLocation持怀疑态度。如果您正在验证实例,那通常是因为您不信任它,如果您不信任它,为什么要信任它的xsi:schemaLocation?