代码之家  ›  专栏  ›  技术社区  ›  ScArcher2

如何使用通用消化器将单个XML条目解析为对象中的多个字段?

  •  0
  • ScArcher2  · 技术社区  · 15 年前

    如何将“joe smith”映射到名字“joe”和姓氏“smith”?

    我已经有了拆分名称的代码,但我不知道如何使用消化器。

    <guestlist>
      <guest>
       <name>Joe Smith</name>
      </guest>
    </guestlist>
    
    public class Guest(){
      private String firstName;
      private String lastName;
    ...
    }
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   mhaller    15 年前

    一个简单的答案是:为您的来宾类添加一个附加属性:

    public class Guest {
        private String firstName;
        private String lastName;
        public void setBothNames(String bothNames) {
            String[] split = bothNames.split(" ");
            firstName = split[0];
            lastName = split[1];
        }
    

    消化器的bean属性设置规则:

        digester.addBeanPropertySetter("guestlist/guest/name", "bothNames");
    
        2
  •  0
  •   Rasik Jain    15 年前
    // Loading from a file, you can also load from a stream
    XDocument loaded = XDocument.Load(@"C:\Guests.xml");
    
    
    // Query the data and write out a subset of guests
    
    var guests= from c in loaded.Descendants("guest")
            select new
            {
                FirstName = SplitFunc_FirstName(c.Element("name")),
                LastName = SplitFunc_LastName(c.Element("name"))
            };
    
    foreach (var guest in guests)
    {
        Your custom code...to attach it to your entity object.
    }
    

    注意:splitfunc_first name是您的自定义函数,您已经将其写入extact first和last name。