小编Ali*_*kau的帖子

使用XmlSerializer将空xml属性值反序列化为nullable int属性

我从第三方获得了一个xml,我需要将它反序列化为C#对象.此xml可能包含值为整数类型或空值的属性:attr ="11"或attr ="".我想将此属性值反序列化为类型为可空整数的属性.但XmlSerializer不支持反序列化为可空类型.在使用InvalidOperationException创建XmlSerializer期间,以下测试代码失败{"有一个错误反映了类型'TestConsoleApplication.SerializeMe'."}.

[XmlRoot("root")]
public class SerializeMe
{
    [XmlElement("element")]
    public Element Element { get; set; }
}

public class Element
{
    [XmlAttribute("attr")]
    public int? Value { get; set; }
}

class Program {
    static void Main(string[] args) {
        string xml = "<root><element attr=''>valE</element></root>";
        var deserializer = new XmlSerializer(typeof(SerializeMe));
        Stream xmlStream = new MemoryStream(Encoding.ASCII.GetBytes(xml));
        var result = (SerializeMe)deserializer.Deserialize(xmlStream);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将'Value'属性的类型更改为int时,反序列化失败并出现InvalidOperationException:

XML文档中存在错误(1,16).

任何人都可以建议如何将具有空值的属性反序列化为可空类型(作为null),同时将非空属性值反序列化为整数?有没有任何技巧,所以我不必手动对每个字段进行反序列化(实际上有很多)?

来自ahsteele的评论后更新:

  1. Xsi:nil属性

    据我所知,此属性仅适用于XmlElementAttribute - 此属性指定元素没有内容,无论是子元素还是正文.但我需要找到XmlAttributeAttribute的解决方案.无论如何我不能改变xml,因为我无法控制它.

  2. bool*指定的属性

    仅当属性值为非空或缺少属性时,此属性才有效.当attr具有空值(attr ='')时,XmlSerializer构造函数失败(如预期的那样).

    public class Element
    {
        [XmlAttribute("attr")]
        public int Value { get; …
    Run Code Online (Sandbox Code Playgroud)

.net xml serialization nullable

73
推荐指数
3
解决办法
6万
查看次数

ruby include vs extend

我试图抽象一些将图像裁剪成模块所需的逻辑,这样就不会弄乱我的模型.该代码基于http://railscasts.com/episodes/182-cropping-images

module CroppableImage
  def croppable_image(*image_names)
    image_names.each do |image_name|

      define_method "#{image_name}_sizes" do
        { :cropped => read_attribute("#{image_name}_size").to_s, :large => "800x800>" }
      end

      define_method "#{image_name}_geometry" do |style|
        style ||= :original
        @geometry ||= {}
        @geometry[style] ||= Paperclip::Geometry.from_file(eval "#{image_name}.path(style)")
      end

      define_method "#{image_name}_aspect_ratio" do
        width, height = read_attribute("#{image_name}_size").split("x")
        width.to_f / height.to_f
      end

      private

        define_method "reprocess_#{image_name}" do
          eval "#{image_name}.reprocess!"
        end

    end
  end

end
Run Code Online (Sandbox Code Playgroud)

要将其包含在我的模型中,似乎我必须使用extend.我认为扩展是为了包括类方法.我来自java背景 - 我认为使用extend基本上在类上创建了静态方法.

class Website < ActiveRecord::Base
  extend CroppableImage
  croppable_image :logo, :footer_image
Run Code Online (Sandbox Code Playgroud)

- 这很有效

那时我真正想要的是创建实例方法.

class Website < ActiveRecord::Base
  include CroppableImage
  croppable_image :logo, …
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming ruby-on-rails railscasts

10
推荐指数
2
解决办法
3222
查看次数

如何成功导致死锁

我试图在C#中造成死锁以进行模拟.只是一个快速的程序.

有人可以提出这样做​​的一些想法吗?

c# deadlock

9
推荐指数
1
解决办法
993
查看次数

通过Regex,Ruby分割时保留模式字符

我有以下字符串

str="HelloWorld How areYou I AmFine"
Run Code Online (Sandbox Code Playgroud)

我希望这个字符串成为以下数组

["Hello","World How are","You I Am", "Fine"]
Run Code Online (Sandbox Code Playgroud)

我一直在使用以下正则表达式,它正确分割但它也省略了匹配模式,我也想保留该模式.我得到的是

str.split(/[a-z][A-Z]/)
 => ["Hell", "orld How ar", "ou I A", "ine"] 
Run Code Online (Sandbox Code Playgroud)

它省略了匹配模式.

任何人都可以帮助我如何在结果数组中保留这些字符

ruby regex arrays string ruby-on-rails

9
推荐指数
2
解决办法
1734
查看次数

如何从Ruby中的URL中删除多个尾部斜杠

我想在这里实现的是让我们说有两个示例网址:

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa//////////"
url2 = "http://www.example.com/"
Run Code Online (Sandbox Code Playgroud)

如何提取条带化的URL?

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa"
url2 = "http://http://www.example.com"
Run Code Online (Sandbox Code Playgroud)

URI.parse 在Ruby中清理某些类型的格式错误的URL,但在这种情况下无效.

如果我们使用正则表达式,然后/^(.*)\/$/删除单斜线/距离url1,是无效的url2.

有人知道如何处理这种类型的URL解析吗?

这里的关键是我不希望我的系统具有http://www.example.com/http://www.example.com被视为两个不同的URL.而且同样适用于http://emy.dod.com/kaskaa/dkaiad/amaa////http://emy.dod.com/kaskaa/dkaiad/amaa/.

ruby regex url-parsing malformed

7
推荐指数
1
解决办法
8489
查看次数

axios 中的动态主机

如何在 中创建动态主机axios

例子:

 const host = location.hostname;
 // axios.defaults.baseURL = 'http://hastore.local';
 axios.defaults.baseURL = host;
 axios.defaults.port = 8080;
 axios.get('api/categories')
 .then((res) => {
      this.categories = res.data;
      console.log(res);
 })
 .catch((err) => {
      console.warn('error during http call', err);
 });
Run Code Online (Sandbox Code Playgroud)

字符串axios.defaults.baseURL = 'http://hastore.local';不适合,因为在生产中不起作用。

字符串const host = location.hostname;也不是解决方案,因为我得到了不正确的端口和重复的主机。

在此输入图像描述

目标是根据环境找到合适的主机。我读了很多关于这个问题的文章,但没有找到解决方案。感谢帮助!

  • axios版本:例如:v0.16.2
  • 环境:例如:node v8.9.4、chrome 64.0.3282.119、Ubuntu 16.04
  • 交响乐4.0.4
  • Vue.js 2.4.2
  • vue-axios 2.0.2

symfony vue.js axios symfony4

6
推荐指数
1
解决办法
4万
查看次数

为什么不能使用类IO的实例方法noecho?

print "Enter your password: "
pass = STDIN.noecho(&:gets)
puts "Your password is #{pass}!"
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

 Enter your password: input.rb:2:in `<main>': undefined method `noecho' for #<IO:<STDIN>> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

ruby passwords

5
推荐指数
1
解决办法
1897
查看次数

AngularJS on输入指令表单输入无保存模型值

我在页面上有以下内容 - 此Plunker中的完整代码

有一个自定义onEnter指令,当在聊天表单输入上按下enter时调用一个函数.下面的代码片段

//**HTML View**
<div ng-controller="mainCtrl">
    <ul>
      <li ng-repeat="chat in chatMessages">
        {{chat.username}}<br/>
           {{chat.message}}
        </li>
    </ul>
</div>
<form id="chatForm" name="chatForm" ng-controller="formCtrl">
    <label for="chat-username">User: </label>
    <input type="text" id="chat-username" class="chat__username" ng-model="chat.username" required>
    <label for="chat-input">Chat: </label> 
    <input type="text" id="chat-input" class="chat__input" on-enter="sendChat()" ng-model="chat.message" required>
    <a href="#" class="chat__submit icon-comments" id="chat-submit"  ng-click="sendChat()" ng-disabled="isChatValid()">Chatme</a>
</form>


//**Javascript**
app.controller('formCtrl',function($scope,Chats){
  $scope.sendChat = function() {
    if($scope.isChatValid()) {
      return;
    }
    console.log(JSON.stringify($scope.chat));
    var msg = {};
    angular.copy($scope.chat,msg);
    Chats.data.push(msg);       
  };

  $scope.isChatValid = function() {
    return $scope.chatForm.$invalid;
  };
});
Run Code Online (Sandbox Code Playgroud)

问题是input( …

angularjs angularjs-directive

5
推荐指数
1
解决办法
8594
查看次数

如何从Savon请求中删除"SOAPAction"HTTP标头

例如,如何从Savon请求中删除HTTP标头

client.request 'v5:ProcessShipments' do
  client.http.headers["SOAPAction"] = "example_post"
end
Run Code Online (Sandbox Code Playgroud)

这会产生

DEBUG -- : SOAPAction: example_post
Run Code Online (Sandbox Code Playgroud)

服务器会响应

Server did not recognize the value of HTTP Header SOAPAction: example_post.
Run Code Online (Sandbox Code Playgroud)

但是,我不想要任何SOAPAction(s)

我试图清除变量并删除它.我搜索了一会儿,找不到任何东西,所以我希望以前没有问过.

提前致谢.

如果我不覆盖它,那么默认情况下Savon将使用client.request'v5:ProcessShipments',这也是不正确的.

ruby header http savon

2
推荐指数
1
解决办法
3514
查看次数