当前位置: 首页 > 知识库问答 >
问题:

应为命名空间中的元素“CustomerReads”http://www.w3.org/2001/XMLSchema-instance'

张高澹
2023-03-14

我得到以下错误时运行我的应用程序:附加信息:错误在第2行位置64.从命名空间http://www.w3.org/2001/XMLSchema-instance期待元素CustomeLeads...遇到名称为“自定义线索”、命名空间的“元素”。

我不明白为什么我会收到这个错误消息,因为正如你从XML中看到的,“自定义领导”包含在XML中。如果我取出命名空间,文件将不会读取元素。包括命名空间似乎工作,但似乎不能弄清楚为什么我得到这个错误。以及如何添加命名空间而不会出现此错误?

<?xml version="1.0" encoding="UTF-8"?>
<CustomerLeads xsi:noNamespaceSchemaLocation="BasicCustomerLead.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CustomerLead>
    <FirstName>Paul</FirstName>
    <LastName>Smith</LastName>
    <Email>psmith@example.com</Email>
  </CustomerLead>-<CustomerLead>
    <FirstName>Nicole</FirstName>
    <LastName>Farhi</LastName>
    <Email>nicole.farhi@example.com</Email>
  </CustomerLead>-<CustomerLead>
    <FirstName>Raf</FirstName>
    <LastName>Simons</LastName>
    <Email>rafs@example.org</Email>
  </CustomerLead>
</CustomerLeads>

代码:

namespace Customer
{
    [DataContract(Name = "CustomerLeads", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
    public class CustomerLeads
    {

        [DataMember()]
        public string FirstName { get; set; }

        [DataMember()]
        public string LastName { get; set; }

        [DataMember()]
        public string EmailAddress { get; set; }


        public CustomerLeads unSortedLeads(string xmFilelPath)
        {

            // doc.Load("C:/Users/Admin/Downloads/potentialcustomers.xml");


            ICollection<CustomerLeads> deserializedPerson;
            CustomerLeads lead;

            FileStream fs = new FileStream(xmFilelPath, FileMode.Open);
            XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
            DataContractSerializer ser = new DataContractSerializer(typeof(CustomerLeads));


            lead = (CustomerLeads)ser.ReadObject(reader, true);
            reader.Close();
            fs.Close();

            FirstName = lead.FirstName.ToString();

            // foreach(CustomerLeads leads in deserializedPerson.)

            return lead;
        }
    }
}

共有2个答案

訾高明
2023-03-14

您的DataContract属性断言customerreads元素应位于http://www.w3.org/2001/XMLSchema-instanceXML名称空间。事实并非如此。在XML中,CustomerLeads没有名称空间(实际上是一个空名称空间)。

请尝试从DataContract属性中删除名称空间设置。

伍溪叠
2023-03-14

您可以尝试

<xsi:CustomerLeads xsi:noNamespaceSchemaLocation="BasicCustomerLead.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <CustomerLead>
    <FirstName>Paul</FirstName>
    <LastName>Smith</LastName>
    <Email>psmith@example.com</Email>
  </CustomerLead>-<CustomerLead>
    <FirstName>Nicole</FirstName>
    <LastName>Farhi</LastName>
    <Email>nicole.farhi@example.com</Email>
  </CustomerLead>-<CustomerLead>
    <FirstName>Raf</FirstName>
    <LastName>Simons</LastName>
    <Email>rafs@example.org</Email>
  </CustomerLead>
</xsi:CustomerLeads>

其他元素也可能需要前缀。

 类似资料: