【发布时间】:2011-03-01 19:04:54
【问题描述】:
我正在开发一个项目,其中对象被解析为 XmlDocument 并发送到服务。一切似乎都在正常工作。但是,空参数存在问题。
当参数填充空字符串(“”或string.Empty)时,会解析以下XmlElement:
<parameterName></parameterName>
我需要这样解析:
<parameterName />
有人告诉我,在我们将这个项目从 .NET 1.1 迁移到 .NET 2.0 之前,这一直是这样工作的。我认为像<parameterName/> 这样解析一个空元素是合乎逻辑的。但它似乎没有。
用于将参数解析为 XML 的代码如下:
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;
}
这看起来并不奇怪,只是创建了一个空值的元素。 这个对象的所有参数都用这个方法解析并放在一个大的 XmlDocument 中。 检查 XmlDocument.OuterXml 时,我可以看到元素被解析为“不正确”。
有没有一种简单的方法可以改变这种行为。在 TFS 中搜索代码历史记录时,我看不到代码中有任何重大变化,这会导致这种不正确的解析。唯一完成的重大更改是更改 .NET 框架版本(1.1 到 2.0),并将项目从 .NET 1.1 Web 服务更改为 .NET 2.0 类库。
【问题讨论】:
-
<parameterName></parameterName>和<parameterName />是等价的!span> -
@Daniel:从严格的 XML 角度来看,它们是,但不幸的是,并非所有软件都是为了平等对待它们而编写的。
-
@Fredrik Mörk:我知道,很遗憾。
-
确实,我所说的大型机对它们的解析方式不同。
标签: c# xml web-services