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