RegEx - 当版本#不是“1.0”时匹配XML声明[关闭](RegEx - Match on XML declarations when the version # is not “1.0” [closed])
我想用RegEx来做这件事。
我需要找到错误的XML声明和任何非1.0版本的声明
以下是有效的匹配:
不好的声明<? xml ver="1.0" encoding="UTF-8"?>
不好的声明
<?xml version="1.0' encoding=UTF-8>
不好的声明
<?xml ?>
错误声明(不在第一行开始)
..... <? xml ver="1.0" encoding="UTF-8"?>
版本1.1(单引号)
<?xml version='1.1' encoding='UTF-8'?>
版本1.1(双引号)
<?xml version="1.1" encoding="UTF-8"?>
错误的版本#
<?xml version='999999' encoding='UTF-8'?>
版本1.1(多行) - 不确定是否允许多行格式化,但我已经看到它已完成,我需要检查它。
<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
我们只希望对无效的XML声明匹配或使用1.0以外版本的 XML声明以下是有效的XML 1.0声明。 这些应该永远不会返回匹配:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <?xml version= "1.0" encoding= 'UTF-8' standalone= "no" ?> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
I want to use RegEx for this.
I need to find errant XML declarations AND anything that is not version 1.0
The following would be valid matches:
Bad declaration<? xml ver="1.0" encoding="UTF-8"?>
Bad declaration
<?xml version="1.0' encoding=UTF-8>
Bad declaration
<?xml ?>
Bad declaration (doesn't start on the first line)
..... <? xml ver="1.0" encoding="UTF-8"?>
Version 1.1 (single quotes)
<?xml version='1.1' encoding='UTF-8'?>
Version 1.1 (double quotes)
<?xml version="1.1" encoding="UTF-8"?>
Erroneous version #
<?xml version='999999' encoding='UTF-8'?>
Version 1.1 (multi-line) - Not sure if multi-line formatting is allowed but I've seen it done and I need to check for it.
<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
We only want matches on invalid XML declarations OR XML declarations with a version other than 1.0The following as valid XML 1.0 declarations. These should never return a match:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <?xml version= "1.0" encoding= 'UTF-8' standalone= "no" ?> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
原文:https://stackoverflow.com/questions/43415215
最满意答案
听起来你正试图做一些类似于我在回答有关IList与NHibernate和WCF的问题时所描述的内容。 由于您在服务和客户端之间共享合同程序集,因此也将共享List反序列化代码。 我成功地使用了这种技术和ChannelFactory方法,希望它适合你。
Sounds like you're trying to do something similar to what I describe in my answer to a question on IList with NHibernate & WCF. Since you are sharing the contract assembly between the service and the client, the List deserialization code will also be shared. I have used this technique with a ChannelFactory approach successfully, hope it works for you.
相关问答
更多-
将SAML2令牌与WCF channelfactory和Weblogic服务一起使用(Using SAML2 Tokens with WCF channelfactory and Weblogic services)[2022-02-11]
端点绑定限制(basicHTTP)不支持SAML2 afaik,ADFS2.0似乎只提供承载令牌并且在事实也是非启动之后修改令牌(WIF建议的覆盖这样做似乎不起作用)正如预期的那样)最后因为Web服务不在https之后,安全模式为none(这是唯一可以使用的模式)意味着没有令牌被发送..啊,好吧,回到绘图板! End point binding limitations (basicHTTP) doesn't support SAML2 afaik, also ADFS2.0 only seems to su ... -
通用WCF代理实现(Generic WCF proxy implementation)[2023-08-14]
如果你想使用lambda对代码进行分解,我建议编写一个如下所示的方法: ... public void ServiceCall(Actionaction) { IFileService proxy = null; ChannelFactory factory = null; try { factory = new ChannelFactory ("*"); pr ... -
您可以使用通用包装方法: public TProxy CreateChannel(string newEndpointAddress) { _endpointAddress = newEndpointAddress; var factory = new ChannelFactory
(new NetTcpBinding(), new EndpointAddress(newEndpointAddress)); return factory.Cr ... -
是的,如果你想创建这样的东西 - 一个静态类来保存所有的ChannelFactory
实例 - 你绝对必须确保这个类是100%的线程安全的,不能同时访问时绊倒。 我还没有使用.NET 4的功能,所以我不能专门评论那些 - 但我一定会建议尽可能安全。 对于你的第二个(次要的)问题:ChannelFactory本身是一个静态类 - 所以你不能真正调用一个.Close()方法。 如果您打算询问是否在实际的IChannel上调用.Close()方法,那么再次:是的,尽可能地成为一个好的公民,如果可以的话关闭这些 ... -
要使序列化程序解释您的合同,需要根据具体类型而不是接口来表达。 如果您将代码更改为此(并使用适当的DataContract和DataMember属性注释类B,那么您应该很高兴。 [DataContract] public class A { [DataMember] public List ListOfB { get; set; } } For the serializer to interpret your contract they need to be expressed i ...
-
每分钟10次并不常见。 每秒10次我绝对会考虑重用频道。 你的案子中有很多未知数要做出正确的决定。 有多少客户将连接到该服务? 这有什么样的联系(它有可能会在几分之一秒内停止),是否有负载均衡器? 代理? 顺便说一句,如果您决定每次都打开和关闭频道,则无需重新创建ChannelFactory。 保持静态,每次只打开和关闭一个新频道。 大多数时候创建工厂会消耗更多资源。 10 times a minute is not that often. 10 times a second i would definit ...
-
WCF ChannelFactory无法准确报告故障状态?(WCF ChannelFactory not accurately reporting Faulted state?)[2024-01-31]
我相信你需要检查通道的状态,而不是工厂。 您可以通过将通道转换为ICommunicationObject来实现此目的, ICommunicationObject在通道和工厂中实现。 像这样的东西: ChannelFactoryfactory = new ChannelFactory ("NetTcpBinding_IContract", ... -
查看我的答案手动将ClientBase集合类型从Array []更改为List <> NHibernate投影和DataContract投影是否必须相同? 我不太了解NHibernate,但是你可以做这样的事吗? public class Channel : EntityBase{ //For WCF [DataMember(Name="LocalChannel")] private List
LocalChannelsPrivate { get {ret ... -
听起来你正试图做一些类似于我在回答有关IList与NHibernate和WCF的问题时所描述的内容。 由于您在服务和客户端之间共享合同程序集,因此也将共享List反序列化代码。 我成功地使用了这种技术和ChannelFactory方法,希望它适合你。 Sounds like you're trying to do something similar to what I describe in my answer to a question on IList with NHibernate & WCF. Si ...
-
使用ChannelFactory调用wcf服务有什么好处(what is the advantage of using ChannelFactory to call wcf service)[2021-12-14]
如果您有任何非.NET的客户端(例如Java或PHP), ChannelFactory将不适用于它们,因为它特定于.NET和WCF。 在这种情况下,您要么必须发布元数据或向客户端发送WSDL,以便他们可以通过他们选择的语言使用的任何方式创建代理(我不太了解Java,PHP等,所以我可以'说明不止于此。) 至于使用ChannelFactory ,我假设您正在谈论ChannelFactory,因为ChannelFactory本身是一个抽象类,无法实例化。 使用通道工厂提供了更大程度的控制(正如其他人指出 ...