Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理XML属性值中的未转义引号字符?_C#_Regex_Xml_String - Fatal编程技术网

C# 如何处理XML属性值中的未转义引号字符?

C# 如何处理XML属性值中的未转义引号字符?,c#,regex,xml,string,C#,Regex,Xml,String,我有一些XML作为字符串从web服务返回(不幸的是,我无法控制如何返回给我。它通常是有效的XML,但有时我会收到一些稍微无效的XML,这导致了这个问题) 字符串基本上如下所示: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <STATUS _Description="...will contact you with a ("Quote") when ..." /> 和:xmlString=xmlStrin

我有一些XML作为字符串从web服务返回(不幸的是,我无法控制如何返回给我。它通常是有效的XML,但有时我会收到一些稍微无效的XML,这导致了这个问题)

字符串基本上如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<STATUS _Description="...will contact you with a ("Quote") when ..." />
和:
xmlString=xmlString.Replace(“\”,“”)(以及许多其他组合,如(
Replace(@“”、“”)
,等等)

这会引发错误:

“&”是意外标记。预期标记为“\”或“”。第1行,位置15。“}

我还尝试了
xmlString=SecurityElement.Escape(xmlString);
(它会抛出与上面相同的错误)。我还尝试了使用XmlWriter/Reader修改字符串,但当它到达有问题的元素时,读取器会抛出一个错误


我的下一个猜测是使用正则表达式将嵌套的引号转换为单引号,但RegEx对我来说有点陌生。我如何解决这个问题,以便使用
XDocument.parse

作为XML发布的字符串是调试时在Visual Studio中检查某个变量的结果,对吗

嗯,Visual Studio自动转义双引号,因此您可以轻松地将该值复制到c代码中。事实上,您的XML不包含所有这些“组”,而只包含“组”。因此,您的实际问题是:

"Thank you for your order! The order is currently being reviewed by a moderator. A moderator will contact you with a ("Quote") when the review is complete."

问题在于“报价单”"另一个双引号字符串中的双引号字符串。因此,与引号相关的错误。该字符串在引号开始处结束。它显示为意外标记。您的XML提供程序实际上没有转义引号单词周围的双引号。

您发布为XML的字符串是由于在Visual Studio中检查某些变量而导致的是吗

嗯,Visual Studio自动转义双引号,因此您可以轻松地将该值复制到c代码中。事实上,您的XML不包含所有这些“组”,而只包含“组”。因此,您的实际问题是:

"Thank you for your order! The order is currently being reviewed by a moderator. A moderator will contact you with a ("Quote") when the review is complete."
问题在于另一个双引号字符串中的“Quote”双引号字符串。因此,与引号相关的错误。该字符串在Quote开始处结束。它显示为意外标记。您的XML提供程序实际上没有转义Quote word周围的双引号

我有一些XML作为字符串从Web服务返回(不幸的是 我无法控制它是如何返回给我的。它通常是有效的 XML,但有时我会收到一些稍微无效的 导致这个问题)

不,您没有XML。您所拥有的文本看起来是XML,但没有满足格式良好的规则。它不是XML。没有一致的XML处理器可以帮助您

完全正确的方法是通知web服务的所有者其服务已损坏。他们必须转义属性中嵌入的引号,或使用相反的引号样式(单引号与双引号字符),或对包含引号字符的数据使用元素。它们不能将任何内容转储到属性值中,并希望得到最好的结果

可能会建议您尝试将文本修复为格式良好的XML.deny,除非您喜欢使用可以忽略的无限方式

我有一些XML作为字符串从Web服务返回(不幸的是 我无法控制它是如何返回给我的。它通常是有效的 XML,但有时我会收到一些稍微无效的 导致这个问题)

不,您没有XML。您所拥有的文本看起来是XML,但没有满足格式良好的规则。它不是XML。没有一致的XML处理器可以帮助您

完全正确的方法是通知web服务的所有者其服务已损坏。他们必须转义属性中嵌入的引号,或使用相反的引号样式(单引号与双引号字符),或对包含引号字符的数据使用元素。它们不能将任何内容转储到属性值中,并希望得到最好的结果


可能会建议您尝试将文本修复为格式良好的XML。拒绝,除非您喜欢玩弄可以忽略的无限方式。

您完全正确@Mihai!我将相应地编辑我的问题。但我相信,关于如何消除“Quote”周围的引号,问题仍然存在(除非我在你的回复中遗漏了什么?)。感谢您的回复,提醒我在VS中查看时会出现这些转义引号。但是,您应该通知web服务提供商,他们提供了格式不正确的XML。修复它是他们的工作。否则,您可以自己删除引号,但这感觉有点错误。XML还包含架构,因此执行一些修补的一般规则可能不会注意安全。我建议你一次处理每一个案例,并进行核心的特定修复。比如替换“报价”使用Quote等。这样,您就不会破坏其他可能符合您创建的修补规则的XML。@vinco83忘了在上面的评论中标记您。您完全正确@Mihai!我将相应地编辑我的问题。但我相信,关于如何消除“Quote”周围的Quote,问题仍然存在(除非我在你的回复中遗漏了什么?)。感谢您的回复,提醒我在VS中查看时会出现这些转义引号。但是,您应该通知web服务提供商,他们提供了格式不正确的XML。修复它是他们的工作。否则,您可以自己删除引号,但这感觉有点错误。XML还包含架构,因此执行一些修补的一般规则可能不会注意安全。我建议你一次处理每一个案例,并进行核心的特定修复。比如用Quote替换Quote等等