<?xml version="1.0" encoding="UTF-8"?>
<EfxTransmit
xmlns="http://www.....abc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www....def http://www....ghi">
<EfxReport requestNumber="1" reportId="CNCONSUMERCREDITFILE">
<CNConsumerCreditReports>
....I only care about these
....I only care about these
....I only care about these
</CNConsumerCreditReports>
</EfxReport>
</EfxTransmit>
我创建了一个类似于此的对象模式:
[XmlRoot("CNConsumerCreditReports")]
public class Data
{
[XmlElement("CNConsumerCreditReport")]
public CNConsumerCreditReports CNConsumerCreditReports { get; set; }
}
但为了使该模式起作用,我必须手动从XML字符串中删除以下内容以及结束结束标记
<EfxTransmit
xmlns="http://www.....abc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www....def http://www....ghi">
<EfxReport requestNumber="1" reportId="CNCONSUMERCREDITFILE">
但是,我发现手动删除这些标签很麻烦,我希望找到一种解决方法。我只是不知道是什么或如何。但我相信有更好的方法。
感谢任何建议或剪切代码!
谢谢。
答案 0 :(得分:1)
鉴于几乎没有其他东西,反序列化整个文档比尝试提取你想要的片段更容易。
您还需要将模型属性中的名称空间与XML中的名称空间进行匹配。
类似于:
[XmlRoot(Namespace="http://www.....abc")]
public class EfxTransmit
{
public EfxReport EfxReport { get; set; }
}
public class EfxReport
{
public CNConsumerCreditReports CNConsumerCreditReports { get; set; }
}
public class CNConsumerCreditReports
{
public CNConsumerCreditReport CNConsumerCreditReport { get; set; }
}
public class CNConsumerCreditReport
{
// ...
}