Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析为空字符串的XmlElement不正确_C#_Xml_Web Services - Fatal编程技术网

C# 解析为空字符串的XmlElement不正确

C# 解析为空字符串的XmlElement不正确,c#,xml,web-services,C#,Xml,Web Services,我正在从事一个项目,其中一个对象被解析为XmlDocument并发送到一个服务。一切似乎都正常工作。但是,空参数存在一个问题 当参数用空字符串(“”或string.empty)填充时,将解析以下XmlElement: <parameterName></parameterName> 这看起来并不奇怪,只是创建了一个空值的元素。 此对象的所有参数都使用此方法进行解析,并放入一个大的XmlDocument中。 签出XmlDocument.OuterXml时,我可以看到元素被解

我正在从事一个项目,其中一个对象被解析为XmlDocument并发送到一个服务。一切似乎都正常工作。但是,空参数存在一个问题

当参数用空字符串(“”或string.empty)填充时,将解析以下XmlElement:

<parameterName></parameterName>
这看起来并不奇怪,只是创建了一个空值的元素。 此对象的所有参数都使用此方法进行解析,并放入一个大的XmlDocument中。 签出XmlDocument.OuterXml时,我可以看到元素被解析为“不正确”

有没有一种简单的方法可以改变这种行为。在TFS中搜索代码历史时,我看不到代码中会导致此错误解析的任何重大更改。所做的唯一重大更改是更改.NET framework版本(1.1到2.0),并将项目从.NET 1.1 Web服务更改为.NET 2.0类库。

在元素上将属性设置为
true

public override XmlNode GetXml(XmlNode parentNode)
{
    if (!Assigned) return null;
    XmlElement node = parentNode.OwnerDocument.CreateElement(Name);
    parentNode.AppendChild(node);
    node.InnerText = Value.ToString();
    node.IsEmpty = string.IsNullOrEmpty(node.InnerText);
    return node;
}

是等价的@丹尼尔:从严格的XML角度来看,它们是一样的,但不幸的是,并不是所有的软件都是平等对待它们的。@Fredrik Mörk:我知道,这很遗憾。事实上,我正在谈论的大型机对它们的解析都不同。谢谢,我不知道IsEmpty参数。
public override XmlNode GetXml(XmlNode parentNode)
{
    if (!Assigned) return null;
    XmlElement node = parentNode.OwnerDocument.CreateElement(Name);
    parentNode.AppendChild(node);
    node.InnerText = Value.ToString();
    return node;
}
public override XmlNode GetXml(XmlNode parentNode)
{
    if (!Assigned) return null;
    XmlElement node = parentNode.OwnerDocument.CreateElement(Name);
    parentNode.AppendChild(node);
    node.InnerText = Value.ToString();
    node.IsEmpty = string.IsNullOrEmpty(node.InnerText);
    return node;
}