【发布时间】:2014-12-02 01:28:36
【问题描述】:
由于另一个产品中的 PHP 错误,我有时会收到格式错误的 XML 响应,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<customfields>
</customfields>Warning
Router: https://example.com/api/index.php?/Tickets/TicketCustomField/Get
file_put_contents(./__swift/cache/SWIFT_Loader.cache): failed to open stream: Invalid argument (C:/Kayako/support/__swift/library/Loader/class.SWIFT_Loader.php:1630)
在我反序列化之前是否存在清理该字符串的安全方法?
重复声明是正确的,但链接的重复没有给出可行的解决方案。
当前的临时解决方案,仅在起始字符串是有效的 XML 并且附加的错误不包含另一个与根标记匹配的结束标记时才有效:
RegexOptions options = RegexOptions.Singleline | RegexOptions.Compiled;
var tidyStreamContents = Regex.Match(streamContents, @"^<\?xml.*?\?>\s*?<(.*?)>.*</(\1)>", options, Regex.InfiniteMatchTimeout).ToString();
【问题讨论】:
-
您可以在最后一个
>之后删除所有内容,这有点天真,但它可以工作。您是否考虑过联系产品的客户支持?
标签: c# xml xml-deserialization