XmlDocument.DocumentElement缺少命名空间

时间:2013-09-18 19:31:02

标签: c# .net xml namespaces

我有一个奇怪的问题,在将XMLElement发送到WCF服务时,似乎无法正确获取名称空间。

XMLElement来自XMLDocument,它从磁盘加载,如下所示:

 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(new XmlTextReader("C:\\Temp\\Test.xml"));

XML包含以下命名空间:

<Root ID="0bb2cc41-57d0-4fc7-93e9-4cbddc8f216b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:somenamespace:2009.07.03">

但是当我像这样使用WCF服务时

vsLightKlient.SendRequest(xmlDoc.DocumentElement);

我可以看到WCF服务只接收

<Root ID="8aa6d535-f448-47b6-b982-c4b9b50556aa" xmlns="urn:somenamespace:2009.07.03>

这是一个问题,因为我正在使用额外的命名空间对原始XMLDocument进行签名。删除额外的名称空间后,签名与我发送的名称不匹配,验证失败

如何让xmlDoc.DocumentElement实际发送所有命名空间?

1 个答案:

答案 0 :(得分:0)

使用这个提示:

https://stackoverflow.com/a/12337548/1005134

我能够强制WCF客户端接受XElement。当我收到我发回的有效负载时,我可以看到我的所有命名空间都存在。不知道DocumentElement的错误在哪里。

最佳,

安德烈亚斯