c# xml 将 xmlns:noNamespaceSchemaLocation 替换为 NS0:noNamespaceSchemaLocation
c# xml replace xmlns:noNamespaceSchemaLocation with NS0:noNamespaceSchemaLocation
我需要使用 C# MVC 应用程序生成一个 xml 文件,该文件具有以下属性:
<File NS0:noNamespaceSchemaLocation="myXML.xsd" xmlns:NS0="http://www.w3.org/2001/XMLSchema-instance">
注意 noNamespaceSchemaLocation 前缀是 NS0
这是我现在拥有的:
<File xmlns:noNamespaceSchemaLocation="myXML.xsd" xmlns:NS0="http://www.w3.org/2001/XMLSchema-instance">
我的文件前缀是xmlns,第一次需要生成xml文件,所以不知道是不是if的要求出错我只是遗漏了一些东西,我正在使用 XmlSerealizerNamespaces class
添加属性
var xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add( "NS0", "http://www.w3.org/2001/XMLSchema-instance" );
xmlNameSpace.Add( "noNamespaceSchemaLocation", "myXML.xsd" );
我已经放弃使用 Xml 库来创建命名空间。而不是仅仅解析字符串
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string xml = "<File NS0:noNamespaceSchemaLocation=\"myXML.xsd\" xmlns:NS0=\"http://www.w3.org/2001/XMLSchema-instance\"></File>";
XDocument doc = XDocument.Parse(xml);
}
}
}
xmlns:NS0
属性是命名空间声明,您已将其正确添加到 XmlSerializerNamesapces
。
NS0:noNamespaceSchemaLocation
只是一个属性,它需要成为您模型的一部分。所以一个非常简单的模型:
public class File
{
[XmlAttribute("noNamespaceSchemaLocation",
Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string NoNamespaceSchemaLocation { get; set; } = "myXML.xsd"
}
在这里您可以看到我们定义了属性的名称和命名空间。此命名空间的前缀将从 XmlSerializerNamespaces
提取为 NS0
。序列化后的输出将是:
<File xmlns:NS0="http://www.w3.org/2001/XMLSchema-instance" NS0:noNamespaceSchemaLocation="myXML.xsd" />
有关工作演示,请参阅 this fiddle。
我需要使用 C# MVC 应用程序生成一个 xml 文件,该文件具有以下属性:
<File NS0:noNamespaceSchemaLocation="myXML.xsd" xmlns:NS0="http://www.w3.org/2001/XMLSchema-instance">
注意 noNamespaceSchemaLocation 前缀是 NS0
这是我现在拥有的:
<File xmlns:noNamespaceSchemaLocation="myXML.xsd" xmlns:NS0="http://www.w3.org/2001/XMLSchema-instance">
我的文件前缀是xmlns,第一次需要生成xml文件,所以不知道是不是if的要求出错我只是遗漏了一些东西,我正在使用 XmlSerealizerNamespaces class
添加属性var xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add( "NS0", "http://www.w3.org/2001/XMLSchema-instance" );
xmlNameSpace.Add( "noNamespaceSchemaLocation", "myXML.xsd" );
我已经放弃使用 Xml 库来创建命名空间。而不是仅仅解析字符串
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string xml = "<File NS0:noNamespaceSchemaLocation=\"myXML.xsd\" xmlns:NS0=\"http://www.w3.org/2001/XMLSchema-instance\"></File>";
XDocument doc = XDocument.Parse(xml);
}
}
}
xmlns:NS0
属性是命名空间声明,您已将其正确添加到 XmlSerializerNamesapces
。
NS0:noNamespaceSchemaLocation
只是一个属性,它需要成为您模型的一部分。所以一个非常简单的模型:
public class File
{
[XmlAttribute("noNamespaceSchemaLocation",
Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string NoNamespaceSchemaLocation { get; set; } = "myXML.xsd"
}
在这里您可以看到我们定义了属性的名称和命名空间。此命名空间的前缀将从 XmlSerializerNamespaces
提取为 NS0
。序列化后的输出将是:
<File xmlns:NS0="http://www.w3.org/2001/XMLSchema-instance" NS0:noNamespaceSchemaLocation="myXML.xsd" />
有关工作演示,请参阅 this fiddle。