【发布时间】:2015-05-08 16:07:47
【问题描述】:
我正在尝试读取包含如下所述数据的元素的 XML 文档。
通过reader.Value、reader.ReadContentAsString()、reader.ReadContentAsObject() 访问文本节点会导致读取的值被截断为最后一个&,因此对于下面的数据,这将是 ISO^urn:ihe:iti: xds:2013:推荐。使用XmlDocument 可以正确读取文本节点,所以我假设必须有一种方法也可以使用阅读器来完成这项工作。
<Slot name="urn:ihe:iti:xds:2013:referenceIdList">
<ValueList>
<Value>123456^^^&orgID&ISO^urn:ihe:iti:xds:2013:referral</Value>
<Value>098765^^^&orgID&ISO^urn:ihe:iti:xds:2013:referral</Value>
</ValueList>
</Slot>
澄清编辑
在提出问题后,我能够确定我的问题来自于从在 WCF 服务调用的上下文中执行的 MessageBuffer 创建的 XPathNavigator 实例创建 XmlReader。因此@DarkGray 的回答对于原始问题是正确的,但并没有真正解决问题的根源。我提供了第二个答案,解决了我的极端情况。
System.ServiceModel.Channels.Message message; // the inbound SOAP message
var buffer = message.CreateBufferedCopy(11 * 1024 * 1024);
var navigator = buffer.CreateNavigator();
var reader = navigator.ReadSubtree();
// advance the reader to the text element
//
// `reader.Value` now produces ISO^urn:ihe:iti:xds:2013:referral
【问题讨论】:
标签: c# xml wcf c#-4.0 xmlreader