C# Dataset.WriteXml()命名空间和前缀

C# Dataset.WriteXml()命名空间和前缀,c#,.net,xml,dataset,C#,.net,Xml,Dataset,我有一个数据集,其中包含输出(写入)到XMl文件的数据 我向数据集添加了名称空间和前缀,如下所示: public static string XmlNamespace = "http://namespace"; public static string XmlPrefix = "ns0"; RequestDataSet.Namespace = XmlNamespace; RequestDataSet.Prefix = XmlPrefix; RequestDataSet.Tables["item

我有一个数据集,其中包含输出(写入)到XMl文件的数据

我向数据集添加了名称空间和前缀,如下所示:

public static string XmlNamespace = "http://namespace";
public static string XmlPrefix = "ns0";
RequestDataSet.Namespace = XmlNamespace;
RequestDataSet.Prefix = XmlPrefix;
RequestDataSet.Tables["item"].Prefix = XmlPrefix;
RequestDataSet.Tables["item"].Namespace = null;
XML输出如下所示:

<?xml version="1.0" standalone="yes"?>
<ns0:list xmlns:ns0="http://namespace">
  <ns0:item xmlns="http://namespace">
    <data1>1234</data1>
    <data2>91011</data2>
  </item>
</ns0:list>

但这也不起作用。。。有人知道这方面的解决方案吗?

我在使用BizTalk适配器时遇到过类似的问题。。。但那是另一回事

不确定是否有不同的(更干净的)方法,但您始终可以“抓取”属性并删除它,如前所述

实际上,您将执行以下操作:

XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(xml);
    if (xDoc.DocumentElement.Attributes.Count > 0)
    {
        XmlAttribute xAtt = xDoc.DocumentElement.Attributes[0];
        xDoc.DocumentElement.Attributes.Remove(xAtt);

我在使用BizTalk适配器时遇到过类似的问题。。。但那是另一回事

不确定是否有不同的(更干净的)方法,但您始终可以“抓取”属性并删除它,如前所述

实际上,您将执行以下操作:

XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(xml);
    if (xDoc.DocumentElement.Attributes.Count > 0)
    {
        XmlAttribute xAtt = xDoc.DocumentElement.Attributes[0];
        xDoc.DocumentElement.Attributes.Remove(xAtt);

此处可能的性能考虑因素也取决于XML的大小。我不确定这是否是另一回事,因为我正在生成的XML文件将被发送到BizTalk server进行处理,我的问题是BizTalk无法验证我的xml文件,因为它不喜欢名称空间:)我现在要尝试您给我的解决方案!我很快会回来报告:)啊,BizTalk似乎确实出现在这些场景中!好的,让我知道。我们在BizTalk中的解决方案是在映射器中有一个内联函数,如果我没记错的话,它也做了与上述类似的事情。如果您可以选择的话,可以在映射器中使用XSLT解决这个问题。请随时通知我。我无法使用您上面描述的代码完成此操作。原因可能是我试图在item elements级别完成这项工作(太深?),我现在使用的是(脏的解决方案?):XmlElement root=doc.DocumentElement;root.InnerXml=root.InnerXml.Replace(“xmlns=\”\”,“”);从我在互联网上看到的情况来看,我认为不应该删除xmlns元素……因为我认为使用您的解决方案可以删除非xmlns属性,因此我认为答案是肯定的:)这里可能的性能考虑因素也取决于您的XML的大小。我不太确定这是不同的情况,由于我正在生成的xml文件将被发送到BizTalk server进行处理,我的问题是BizTalk无法验证我的xml文件,因为它不喜欢名称空间:)我现在要尝试您给我的解决方案!我很快会回来报告:)啊,BizTalk似乎确实出现在这些场景中!好的,让我知道。我们在BizTalk中的解决方案是在映射器中有一个内联函数,如果我没记错的话,它也做了与上述类似的事情。如果您可以选择的话,可以在映射器中使用XSLT解决这个问题。请随时通知我。我无法使用您上面描述的代码完成此操作。原因可能是我试图在item elements级别完成这项工作(太深?),我现在使用的是(脏的解决方案?):XmlElement root=doc.DocumentElement;root.InnerXml=root.InnerXml.Replace(“xmlns=\”\”,“”);从我在互联网上看到的情况来看,我认为不应该删除xmlns元素……因为我的印象是,使用您的解决方案,非xmlns属性将是可删除的,因此我认为答案是:)