【发布时间】:2019-05-21 04:45:24
【问题描述】:
我有一个来自客户端的 xml 文件。它使用带有许多节点的名称前缀。但它没有在文档中定义任何命名空间。示例如下:
<?xml version="1.0"?>
<SemiconductorTestDataNotification>
<ssdh:DocumentHeader>
<ssdh:DocumentInformation>
<ssdh:Creation>2019-03-16T13:49:23</ssdh:Creation>
</ssdh:DocumentInformation>
</ssdh:DocumentHeader>
<LotReport>
<BALocation>
<dm:ProprietaryLabel>ABCDEF</dm:ProprietaryLabel>
</BALocation>
</LotReport>
</SemiconductorTestDataNotification>
我使用以下 xml 类来读取它但失败了
System.Xml.Linq.XElement
System.Xml.XmlDocument
System.Xml.XmlReader
System.Xml.Linq.XDocument
报错:
'ssdh' 是一个未声明的前缀。
我知道前缀命名空间。这些将是:
xmlns:ssdh="urn:rosettanet:specification:system:StandardDocumentHeader:xsd:schema:01.13"
xmlns:dm="urn:rosettanet:specification:domain:Manufacturing:xsd:schema:01.14"
我自己在 xml 文件中添加这些命名空间是不可行的,因为会有很多 xml 文件,而且这些文件每天都会出现。
我是否有可能创建一个文件(例如 xsd)并在其中写入命名空间并在 C# 代码中使用这个(所谓的)模式文件读取 xml 文件。
【问题讨论】:
-
看起来像 How to fix missing namespace prefix in XML 的副本,特别是 this answer。但是,您需要稍微概括那里的答案,以允许多个应用程序指定的缺失命名空间。这是否回答了您的问题,还是您需要帮助调整答案?
标签: c# xml xml-namespaces