xml字符串转化为对象

这里使用C#中的XML解析来将XML字符串转换为对象,并提取相应的值。

以下是一个C#示例代码:

```csharp
using System;
using System.Xml;

public class SmsInfo
{
    public string OrgCode { get; set; }
    public string BusinessCode { get; set; }
    public string DeptCode { get; set; }
    public string PersonCode { get; set; }
    public string ReceInfo { get; set; }
    public string SendFlag { get; set; }
    public PhoneDetail PhoneDetail { get; set; }
}

public class PhoneDetail
{
    public string PhoneNum { get; set; }
    public string UserType { get; set; }
}

public class Program
{
    public static void Main()
    {
        string xmlString = "<SmsInfo><orgCode>135006555530</orgCode><businessCode>7001</businessCode><deptCode>135555555550</deptCode><personCode>16307856</personCode><receInfo>来访者咔咔拜访康和财任务待审核</receInfo><sendFlag>0</sendFlag><phoneDetail><phoneNum>134654229</phoneNum><userType>0</userType></phoneDetail></SmsInfo>";

        // 创建XML文档对象
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlString);

        // 创建SmsInfo对象并提取值
        SmsInfo smsInfo = new SmsInfo();
        smsInfo.OrgCode = xmlDoc.SelectSingleNode("SmsInfo/orgCode")?.InnerText;
        smsInfo.BusinessCode = xmlDoc.SelectSingleNode("SmsInfo/businessCode")?.InnerText;
        smsInfo.DeptCode = xmlDoc.SelectSingleNode("SmsInfo/deptCode")?.InnerText;
        smsInfo.PersonCode = xmlDoc.SelectSingleNode("SmsInfo/personCode")?.InnerText;
        smsInfo.ReceInfo = xmlDoc.SelectSingleNode("SmsInfo/receInfo")?.InnerText;
        smsInfo.SendFlag = xmlDoc.SelectSingleNode("SmsInfo/sendFlag")?.InnerText;

        // 创建PhoneDetail对象并提取值
        XmlNode phoneDetailNode = xmlDoc.SelectSingleNode("SmsInfo/phoneDetail");
        if (phoneDetailNode != null)
        {
            smsInfo.PhoneDetail = new PhoneDetail();
            smsInfo.PhoneDetail.PhoneNum = phoneDetailNode.SelectSingleNode("phoneNum")?.InnerText;
            smsInfo.PhoneDetail.UserType = phoneDetailNode.SelectSingleNode("userType")?.InnerText;
        }

        // 输出提取的值
        Console.WriteLine("OrgCode: " + smsInfo.OrgCode);
        Console.WriteLine("BusinessCode: " + smsInfo.BusinessCode);
        Console.WriteLine("DeptCode: " + smsInfo.DeptCode);
        Console.WriteLine("PersonCode: " + smsInfo.PersonCode);
        Console.WriteLine("ReceInfo: " + smsInfo.ReceInfo);
        Console.WriteLine("SendFlag: " + smsInfo.SendFlag);
        Console.WriteLine("PhoneNum: " + smsInfo.PhoneDetail?.PhoneNum);
        Console.WriteLine("UserType: " + smsInfo.PhoneDetail?.UserType);
    }
}
```

在上述示例中,我们定义了一个`SmsInfo`类和一个`PhoneDetail`类,分别表示XML中的`SmsInfo`和`phoneDetail`节点的数据结构。然后,我们使用`XmlDocument`类加载XML字符串,并使用`SelectSingleNode`方法提取相应节点的值,并将其赋值给对应的属性。

最后,我们输出了提取的值,你可以根据需要进一步处理或使用这些值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以使用JAXB(Java Architecture for XML Binding)来实现XML字符串和Java对象之间的换。 1. 将Java对象换为XML字符串 使用JAXB的Marshaller类可以将Java对象换为XML字符串。以下是一个示例代码: ```java // 创建JAXBContext对象 JAXBContext jaxbContext = JAXBContext.newInstance(Student.class); // 创建Marshaller对象 Marshaller marshaller = jaxbContext.createMarshaller(); // 设置Marshaller的属性 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 将Java对象换为XML字符串 Student student = new Student("Tom", 18); StringWriter writer = new StringWriter(); marshaller.marshal(student, writer); String xmlString = writer.toString(); System.out.println(xmlString); ``` 2. 将XML字符串换为Java对象 使用JAXB的Unmarshaller类可以将XML字符串换为Java对象。以下是一个示例代码: ```java // 创建JAXBContext对象 JAXBContext jaxbContext = JAXBContext.newInstance(Student.class); // 创建Unmarshaller对象 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); // 将XML字符串换为Java对象 String xmlString = "<student><name>Tom</name><age>18</age></student>"; StringReader reader = new StringReader(xmlString); Student student = (Student) unmarshaller.unmarshal(reader); System.out.println(student.getName() + ", " + student.getAge()); ``` 需要注意的是,在将Java对象换为XML字符串和将XML字符串换为Java对象时,都需要先创建JAXBContext对象。JAXBContext是线程安全的,因此建议在应用程序启动时创建一次即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值