【问题标题】:Incoming XML case sensitivity issue传入的 XML 区分大小写问题
【发布时间】:2023-03-15 15:16:01
【问题描述】:

我有一个获取 XML 并反序列化为对象的 webapi (.NET core 3.1) 方法。但是有些标签的开头和结尾是不一样的。例如,如果以<Address> 打开,则以</address> 关闭。所以 XML 格式不正确。我知道 XML 是区分大小写的,但是有什么选项可以忽略这种区分大小写吗?

XML 是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<Orders>
    <User>UserName</User>
    <Address>address line</address>
</Orders>

【问题讨论】:

  • 为什么不修复有问题的 XML 生成器呢? 是真正的错误。 Addressaddress 是两个不同的 XML 元素。
  • 它不在我们这边。它来自 SAP,他们不想修复它。
  • SAP 不这样做。自定义合作伙伴或实施者代码可以做到这一点。他们得到报酬来编写一些被破坏的扩展。他们应该修复它们。有人可能会争辩说,这个错误太糟糕了,即使项目失去支持,他们必须修复它,因为他们从未交付过——那不是 XML
  • 即使您是合作伙伴,并且“他们”是错误代码生成无效 XML 的客户,他们仍然没有履行提供有效 XML 的义务。 BTW SAP 具有出色的 SOAP 支持和 .NET 集成。如果 SAP 有问题,20 年前成千上万的公司就会注意到。
  • 换一种说法,你的项目经理会明白,如果他们想让你做额外的工作来处理非 XML 文本,你不应该得到报酬吗?谁来决定免费工作?

标签: c# xml asp.net-core deserialization asp.net-core-webapi


【解决方案1】:

没有

XML 组件名称(包括元素名称)区分大小写。标准中没有任何规定可以改变这一点,您也不应该尝试临时这样做,因为您会破坏 XML 标准以及拥有标准的所有好处。

但我该怎么办?

  1. 在产生错误“XML”的源头上解决问题(最好),或者
  2. 修复错误的 XML 本身。见How to parse invalid (bad / not well-formed) XML?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多