BizTalk 2010 WCF 删除处理指令
BizTalk 2010 WCF Remove processing instruction
我需要从 public 网站 (http://www.tcmb.gov.tr/kurlar/201707/10072017.xml) 下载 XML 文件以获取汇率。
但是我有一个问题,因为 XML 包含一个 xml-stylesheet 处理指令。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="isokur.xsl"?>
<Tarih_Date Tarih="07.07.2017" Date="07/07/2017" Bulten_No="2017/131" >
我将 WCF 自定义端口与来自 bLogical 的 webHttpBindng 和 BizTalk REST 入门工具包一起使用。一切正常,但是当我尝试解析传入的 xml 时,我在该处理指令上遇到错误。
System.Xml.XmlException: Processing instructions (other than the XML declaration) and DTDs are not supported. Line 2, position 2.
我不确定解决此问题的最佳方法是什么。我尝试遵循本指南 WCF Errors on XML Deserialization 但是当我尝试使用 CreateBufferedCopy 方法访问消息内容时它仍然失败。
using (var readStream = new System.IO.MemoryStream())
{
using (var buffer = reply.CreateBufferedCopy(int.MaxValue))
{
buffer.WriteMessage(readStream);
}
readStream.Position = 0;
xdoc.Load(readStream);
}
有人知道我如何在不实际解析 XML 的情况下访问我的消息内容吗?我只是想找到一种方法来删除该行或让解析器忽略它。
最终我自己找到了解决方案。我没有使用消息检查器,而是基于您可以在网上找到的 CustomTextMessageEncoder 创建了一个消息编码器。
在 ReadMessage 方法中我只是添加了一点代码
public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType)
{
XmlReaderSettings xsettings = new XmlReaderSettings();
xsettings.IgnoreProcessingInstructions = true;
XmlReader reader = XmlReader.Create(stream,xsettings);
return Message.CreateMessage(reader, maxSizeOfHeaders, this.MessageVersion);
}
我需要从 public 网站 (http://www.tcmb.gov.tr/kurlar/201707/10072017.xml) 下载 XML 文件以获取汇率。 但是我有一个问题,因为 XML 包含一个 xml-stylesheet 处理指令。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="isokur.xsl"?>
<Tarih_Date Tarih="07.07.2017" Date="07/07/2017" Bulten_No="2017/131" >
我将 WCF 自定义端口与来自 bLogical 的 webHttpBindng 和 BizTalk REST 入门工具包一起使用。一切正常,但是当我尝试解析传入的 xml 时,我在该处理指令上遇到错误。
System.Xml.XmlException: Processing instructions (other than the XML declaration) and DTDs are not supported. Line 2, position 2.
我不确定解决此问题的最佳方法是什么。我尝试遵循本指南 WCF Errors on XML Deserialization 但是当我尝试使用 CreateBufferedCopy 方法访问消息内容时它仍然失败。
using (var readStream = new System.IO.MemoryStream())
{
using (var buffer = reply.CreateBufferedCopy(int.MaxValue))
{
buffer.WriteMessage(readStream);
}
readStream.Position = 0;
xdoc.Load(readStream);
}
有人知道我如何在不实际解析 XML 的情况下访问我的消息内容吗?我只是想找到一种方法来删除该行或让解析器忽略它。
最终我自己找到了解决方案。我没有使用消息检查器,而是基于您可以在网上找到的 CustomTextMessageEncoder 创建了一个消息编码器。 在 ReadMessage 方法中我只是添加了一点代码
public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType)
{
XmlReaderSettings xsettings = new XmlReaderSettings();
xsettings.IgnoreProcessingInstructions = true;
XmlReader reader = XmlReader.Create(stream,xsettings);
return Message.CreateMessage(reader, maxSizeOfHeaders, this.MessageVersion);
}