根据该标准,“XML名称空间提供了一种简单的方法,用于通过将它们与URI引用标识的名称空间相关联来限定可扩展标记语言文档中使用的元素和属性名称。”
对于“hello world”类型的 xml 文档: 对于“hello world”类型的 xml 文档: <?xml version="1.0" encoding="UTF-8"?> <!-- see http://www.w3.org/TR/REC-xml-names/ --> <bk:book xmlns:bk="urn:loc.gov:books" xmlns:isbn="urn:ISBN:0-395-36341-6"> <bk:title>Cheaper by the Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book> 您可以出于自定义目的任意定义骨灰盒吗? 简而言之,是的。 你可以随心所欲地化妆。 我找到了 “XSD 文件,从哪里获取 xmlns 参数?”答案非常有用,它让我看到了文章“XML设计的原则:小心使用XML名称空间”,这似乎是说,是的,你可以按照你喜欢的方式编写它们,而且确实你应该,如果你不是'不会将给定 URL 的文档放到网上。
wsdl 架构命名空间前缀在不同环境中发生变化 - AXIS2
我最近在 Open Nebula 中部署了一个具有 SOAP Web 服务的组件。部署后,我们注意到 WSDL 响应具有不同的名称空间前缀 问题:AlertBot 正在等待...
在Python中解析Google Earth KML文件(lxml,命名空间)
我正在尝试使用 xml 模块将 .kml 文件解析为 Python(在我用于 HTML 的 BeautifulSoup 中未能完成此操作之后)。 因为这是我第一次这样做,所以我就跟着走了......
如何使用命名空间前缀进行转换?添加它 do xslt 不起作用
问题来了。 XMLDOM(Microsoft.XMLDOM 对象)不缩进 XML。它是人类无法读取的。 以前,在制作 XML 文档后,我只会运行此转换 问题来了。 XMLDOM(Microsoft.XMLDOM 对象)不缩进 XML。它是人类无法读取的。 以前,在制作 XML 文档后,我只会运行此转换 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 在某处找到的。 然后我将使用原始 XML 对象 oXDoc,使用此 XSLT 转换创建此 XML 对象 oXsl 指令,然后调用transformNodeToObject,并创建一个第三个对象oRes,它将是一个已经缩进的XML,然后将该第三个对象保存到磁盘或其他地方。 oXDoc.transformNodeToObject(oXsl, oRes) oRes.Save(cXmlFile) 它工作得很好,直到出现具有非默认名称空间的文档。 例如,像这样的 XML <?xml version="1.0" encoding="UTF-8"?> <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"> <cbc:IssueDate>2024-11-07</cbc:IssueDate> <cac:AccountingSupplierParty> <cac:Party> <cbc:EndpointID schemeID="1234">AB90000012345</cbc:EndpointID> </cac:Party></cac:AccountingSupplierParty></Invoice> 不再有效,但我在 XSL 中包含了所有名称空间,当我寻找答案时,所有名称似乎都在说同样的事情。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"> <xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> 如果我删除原始 XML 文档中的所有前缀,它会起作用,它会缩进并包含所有名称空间绑定,但它没有用!我需要提供所有前缀,因为它们之间有很多通用名称,例如名称或 ID 等,否则它们会变得不明确。 那么正确的做法是什么呢?如何使其缩进文档并保留所有前缀而不出错?我按原样复制文档,仅添加缩进。无需实际转换。 我试过这个: <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> <xsl:template match="@*|*:node()"> <xsl:copy> <xsl:apply-templates select="@*|*:node()"/> </xsl:copy> 和 这个 <xsl:template match="@*|:node()"> <xsl:copy> <xsl:apply-templates select="@*|:node()"/> </xsl:copy> 甚至这个 <xsl:template match="@*|:node()"> <xsl:copy> <xsl:apply-templates select="@*|node()|cbc:node()|cac:node()"/> </xsl:copy> 还有很多很多其他的。 原始代码会出现错误,仅显示“msxml3:只有默认命名空间可以有空 URI”之类的内容。这真的很奇怪。所有命名空间都写在两个文档中,那么是什么给出了??? 其他尝试只是不喜欢该模式,并且错误显示“无效匹配模式”、“找到:”、“预期 eof”等等。 我也尝试过包括 extension-element-prefixes="cbc cac #default" 进入 xsl:stylesheet 元素,结果为零。 更新: 好吧,如果我在转换之前将 xml 保存到磁盘,然后再次将其加载到同一个对象中并进行转换,那么这最终可以工作。 也许元素的创建方式有问题?我只是将前缀和名称放在一起,如下所示: oEl = oMainEl.appendChild(oXDoc.createElement("cac:Party")).appendChild(oXDoc.createElement("cbc:EndpointID")) oEl.Text = "AB90000012345" oEl.setAttribute("schemeID", "1234") 很奇怪。也许需要进行一些奇怪的操作 如果我没记错的话,使用 MSXML,要在某个命名空间中正确创建一般元素或节点,不要使用 createElement,使用专有的 createNode https://learn.microsoft.com/en -us/previous-versions/windows/desktop/ms757901(v=vs.85) 确保传入节点类型、限定名称和要创建的节点的命名空间 URI。 参见https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms757047(v=vs.85)中关于createElement的备注: 使用该方法创建元素与使用createNode是一样的 其中类型参数值为 NODE_ELEMENT 并且没有命名空间 指定。 您不能使用以下方法创建命名空间限定的元素 创建元素方法。无论命名空间前缀是否为 包含在 tagName 参数*,* 的 namespaceURI 属性中 新元素节点设置为空字符串“”。一个元素节点 作为 XML 文档加载操作的一部分构造的永远不会有 前缀和空命名空间统一资源标识符 (统一资源定位符)。您只能使用以下命令创建命名空间限定的元素 DOMDocument 对象的 createNode 方法。
我有这个疑问 使用 XMLNAMESPACES(默认 'https://tribunet.hacienda.go.cr /docs/esquemas/2017/v4.2/facturaElectronica' ,'http://www.w3.org/2001/XMLSchema' AS xsd ...
有没有办法从 Adobe XD 导出没有 id 的 SVG 文件?
当将(例如)图标从 Adobe XD 导出为 SVG 文件时,代码包含对我来说不必要的 ID。当我想在 HTML 文件中内联使用 SVG 文件时,它会给出...
希望有人能够解释为什么会发生这种情况。 我在代码中的其他地方使用了完全相同的语法,没有任何问题,但由于某种原因,这不起作用: $sale = $xml->addChi...
我的代码: $xmlns = [ 'xmlns' => 'http://www.w3.org/2000/xmlns/', 'rsm' => 'urn:un:unece:uncefact:数据:标准:CrossIndustryInvoice:100', 'ram' => '瓮:un:unece:uncfact...
使用 XSLT 更改根元素和命名空间,但保留其他公共命名空间
我正在尝试将 XML 文档转换为具有新根元素的文档,但该文档共享许多其他公共元素名称空间。我在命名空间转换方面遇到麻烦。 这是 inp...
Highcharts 在 IE 中向 SVG 元素添加重复的 xmlns 属性
我正在使用 Highcharts 在 PHP Web 应用程序中创建图表。问题是,在 IE 中,创建的 SVG 元素最终会出现重复的 xmlns 属性。在F12开发者里可以看到...
XmlElement.Attributes.Remove* 方法对于任意属性都可以正常工作,导致已删除的属性从 XmlDocument.OuterXml 属性中删除。然而 Xmlns 属性是不同的...
在使用命名空间时,我尝试了无数种方法从 Python 的 SAX 解析器中获取属性值,但找不到方法。这里一定有一个简单的解决方案,但为了我的生活,我可以......
我正在尝试使用 xmlParseBalancedChunkMemory 从 XML 字符串创建 xmlNode,但是当 XML 字符串中包含前缀/命名空间时,libxml2 会抛出错误 201 (
问题:为 XPath 上下文注册默认 NS 的正确方法是什么? 我已经浏览了很多关于注册 NS 的帖子(主要是非 C++ 和 Google 搜索),但我找不到任何内容......
C# Linq to XML - 将命名空间保留在父节点中,同时从子节点中删除它们
所以我通过 LINQ to XML 创建了这个 XML 树,如下所示: XNamespace xNamespace = "urn:OECD:StandardAuditFile-Tax:PT_"; X元素主要 = new XElement(xNamespace + "Aud...
嗨,我需要有关 sql 中以下内容的帮助: 我需要创建一个这种格式的xml文件 嗨,我需要有关 sql 中以下内容的帮助: 我需要创建一个这种格式的xml文件 <Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRpt> <GrpHdr> <MsgId></MsgId> </GrpHdr> <OrgnlGrpInfAndSts> <OrgnlMsgId /> </OrgnlGrpInfAndSts> </FIToFIPmtStsRpt> </document> 目前我有一个保存主要信息的变量,并且我建立了信息之间的关系(假设 grphdr 可以使用不同的信息多次插入到主 xml 中) declare @xml xml='<Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRpt> </FIToFIPmtStsRpt> </Document> ' declare @xmlgrp xml='<GrpHdr> <MsgId></MsgId> </GrpHdr>' --here i do some code to fill msgid 然后当我将 grphdr 添加回主 xml 时 SET @xml.modify ('declare namespace a= "urn:iso:std:iso:20022:tech:xsd:001.002.001.04"; insert sql:variable("@xmlgrp") into (a:Document/a:FIToFIPmtStsRpt)[1]') select @xml 我需要获取顶级文件格式,但现在发生的是以下内容 <Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRpt> <GrpHdr xmlns="">-- i need this xmlns tag out <MsgId /> </GrpHdr> </FIToFIPmtStsRpt> </Document> 不知何故,我需要 xml 中的空 xmlns 标签。我无法转换为 varchar(max) 来删除,因为我们的数据库已将变量限制为 8000 个字符 而我的xml可以增长到8000多个。 1 个文件中可以有多个 grphdr 或 OrgnlGrpInfAndSts table: lim_Live_Inbound lim_msg_id | lim_request_transaction_id | client_name ------------------------------------------------------ 021/00210006/20160225/000002 | 00012016-02-25000000023 | Mr Piet 021/00210006/20160225/000002 | 00012016-02-25000000022 | Mrs Name 必须这样生成 <Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRpt> <GrpHdr> <MsgId>021/00210006/20160225/000002</MsgId> </GrpHdr> <OrgnlGrpInfAndSts> <OrgnlMsgId>00012016-02-25000000023</OrgnlMsgId> <name>Mr Piet</name> </OrgnlGrpInfAndSts> <OrgnlGrpInfAndSts> <OrgnlMsgId>00012016-02-25000000022</OrgnlMsgId> <name>Mrs Name</name> </OrgnlGrpInfAndSts> </FIToFIPmtStsRpt> </document> 这就是我尝试插入 xml 方式的原因。如果有人可以帮助我找到更好的方法,我将不胜感激。 我终于找到了一种避免重复命名空间的方法。首先创建不带命名空间的嵌套 XML,然后加入它: 这个解决方法实际上仍然没有多大帮助。命名空间 xmlns="" 被视为*内的所有内容都不在命名空间内...您可以将结果转换为 NVARCHAR(MAX) 并使用 REPLACE 来摆脱 xmlns=""。然后您可以将字符串重新转换为XML。微软感到羞耻,这个 10(!!) 年前的问题(见下面的链接)仍然没有解决。请去那里投票! DECLARE @lim_Live_Inbound TABLE(lim_msg_id VARCHAR(100),lim_request_transaction_id VARCHAR(100),client_name VARCHAR(100)); INSERT INTO @lim_Live_Inbound VALUES ('021/00210006/20160225/000002','00012016-02-25000000023','Mr Piet') ,('021/00210006/20160225/000002','00012016-02-25000000022','Mrs Name'); DECLARE @nestedXMLs TABLE(MsgId VARCHAR(100),nestedXML XML); WITH GrpMsg AS ( SELECT DISTINCT lim_msg_id AS MsgId FROM @lim_Live_Inbound ) INSERT INTO @nestedXMLs SELECT MsgId ,( SELECT innerTbl.lim_request_transaction_id AS OrgnlMsgId ,innerTbl.client_name AS name FROM @lim_Live_Inbound AS innerTbl WHERE innerTbl.lim_msg_id=GrpMsg.MsgId FOR XML PATH('OrgnlGrpInfAndSts'),TYPE ) FROM GrpMsg; WITH XMLNAMESPACES(DEFAULT 'urn:iso:std:iso:20022:tech:xsd:001.002.001.04') ,GrpMsg AS ( SELECT DISTINCT lim_msg_id AS MsgId FROM @lim_Live_Inbound ) SELECT GrpMsg.MsgId AS [GrpHdr/MsgId] ,n.nestedXML AS [node()] FROM GrpMsg INNER JOIN @nestedXMLs AS n ON GrpMsg.MsgId=n.MsgId FOR XML PATH('FIToFIPmtStsRp'),ROOT('Document') 结果 <Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRp> <GrpHdr> <MsgId>021/00210006/20160225/000002</MsgId> </GrpHdr> <OrgnlGrpInfAndSts xmlns=""> <OrgnlMsgId>00012016-02-25000000023</OrgnlMsgId> <name>Mr Piet</name> </OrgnlGrpInfAndSts> <OrgnlGrpInfAndSts xmlns=""> <OrgnlMsgId>00012016-02-25000000022</OrgnlMsgId> <name>Mrs Name</name> </OrgnlGrpInfAndSts> </FIToFIPmtStsRp> </Document> 您可以使用 CAST(REPLACE(CAST(TheXMLHere AS NVARCHAR(MAX)),' xmlns=""','') AS XML) 来摆脱错误的空命名空间.... 拟合样本数据的另一种方法 这是重复命名空间 - 但这在语法上是正确的,但很烦人(请阅读此处:https://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select- for-xml-语句) DECLARE @lim_Live_Inbound TABLE(lim_msg_id VARCHAR(100),lim_request_transaction_id VARCHAR(100),client_name VARCHAR(100)); INSERT INTO @lim_Live_Inbound VALUES ('021/00210006/20160225/000002','00012016-02-25000000023','Mr Piet') ,('021/00210006/20160225/000002','00012016-02-25000000022','Mrs Name'); WITH XMLNAMESPACES(DEFAULT 'urn:iso:std:iso:20022:tech:xsd:001.002.001.04') ,GrpMsg AS ( SELECT DISTINCT lim_msg_id AS MsgId FROM @lim_Live_Inbound ) SELECT MsgId AS [GrpHdr/MsgId] ,( SELECT innerTbl.lim_request_transaction_id AS OrgnlMsgId ,innerTbl.client_name AS name FROM @lim_Live_Inbound AS innerTbl WHERE innerTbl.lim_msg_id=GrpMsg.MsgId FOR XML PATH('OrgnlGrpInfAndSts'),TYPE ) FROM GrpMsg FOR XML PATH('FIToFIPmtStsRp'),ROOT('Document') 结果 <Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRp> <GrpHdr> <MsgId>021/00210006/20160225/000002</MsgId> </GrpHdr> <OrgnlGrpInfAndSts xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <OrgnlMsgId>00012016-02-25000000023</OrgnlMsgId> <name>Mr Piet</name> </OrgnlGrpInfAndSts> <OrgnlGrpInfAndSts xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <OrgnlMsgId>00012016-02-25000000022</OrgnlMsgId> <name>Mrs Name</name> </OrgnlGrpInfAndSts> </FIToFIPmtStsRp> </Document> 否则,您可以尝试以下方法。我不知道你的数据来自哪里,但是 - 绝对硬编码 - 这就是方法: WITH XMLNAMESPACES(DEFAULT 'urn:iso:std:iso:20022:tech:xsd:001.002.001.04') SELECT 0 AS [GrpHdr/MsgId] ,0 AS [OrgnlGrpInfAndSts/OrgnlMsgId] FOR XML PATH('FIToFIPmtStsRp'),ROOT('Document') 结果 <Document xmlns="urn:iso:std:iso:20022:tech:xsd:001.002.001.04"> <FIToFIPmtStsRp> <GrpHdr> <MsgId>0</MsgId> </GrpHdr> <OrgnlGrpInfAndSts> <OrgnlMsgId>0</OrgnlMsgId> </OrgnlGrpInfAndSts> </FIToFIPmtStsRp> </Document>
我有这个 xml 文件,我正在尝试使用 xmllint 或 grep 来获得这样的输出 availStart =“2024-05-24T05:00:30”availId =“811220455”q1:campaignIdRef = 180398 可用开始=...
我有以下 XML 文件(摘录): 我有以下 XML 文件(摘录): <AutoindexBundle xmlns:i="...www.w3.org/2001/XMLSchema-instance" xmlns="...dev.mysite.com/settings/settingsExchange"> <Autoindex xmlns:d2p1="...dev.mysite.com/settings/workflows/autoindex"> <Header xmlns="...//dev.mysite.com/settings/bpsprocesses/common"> <Guid xmlns="...//dev.mysite.com/settings/interop">0a3b7b31-907a-40bf-b55f-747046dc7ea2</Guid> <ID xmlns="...//dev.mysite.com/settings/interop">413</ID> <Name xmlns="...//dev.mysite.com/settings/interop">SD_CLEAR_STATUS</Name> <Description>Löscht die Einträge im Statusfeld</Description> </Header> <d2p1:AIMatchOptionSettings> <d2p1:MatchCodes> ... 例如,我想反序列化此文件以获得“Header.Name”下的信息。我已经在互联网上查看了许多示例,但不知何故它们并不全部与我的源文件匹配。 我首先使用“插入特殊”功能在 VB.NET 中创建一个类,并将其保存在名为“AutoindesBundle”的模块中。以下是摘录: Public Class AutoindexBundle ' HINWEIS: Für den generierten Code ist möglicherweise mindestens .NET Framework 4.5 oder .NET Core/Standard 2.0 erforderlich. '''<remarks/> <System.SerializableAttribute(), System.ComponentModel.DesignerCategoryAttribute("code"), System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="...//dev.mysite.com/settings/settingsExchange"), System.Xml.Serialization.XmlRootAttribute([Namespace]:="...//dev.mysite.com/settings/settingsExchange", IsNullable:=False)> Partial Public Class AutoindexBundle Private autoindexField As AutoindexBundleAutoindex Private guidField As String Private ruleField As Object Private scheduleSettingsField As AutoindexBundleScheduleSettings '''<remarks/> Public Property Autoindex() As AutoindexBundleAutoindex Get Return Me.autoindexField End Get Set Me.autoindexField = Value End Set End Property '''<remarks/> Public Property Guid() As String Get Return Me.guidField End Get Set Me.guidField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute(IsNullable:=True)> Public Property Rule() As Object Get Return Me.ruleField End Get Set Me.ruleField = Value End Set End Property '''<remarks/> Public Property ScheduleSettings() As AutoindexBundleScheduleSettings Get Return Me.scheduleSettingsField End Get Set Me.scheduleSettingsField = Value End Set End Property End Class '''<remarks/> <System.SerializableAttribute(), System.ComponentModel.DesignerCategoryAttribute("code"), System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="...dev.mysite.com/settings/settingsExchange")> Partial Public Class AutoindexBundleAutoindex Private headerField As Header Private aIMatchOptionSettingsField As AIMatchOptionSettings Private extDBActionsField As ExtDBActions Private extDBSourceField As ExtDBSource Private externalDataSourceTypeField As String Private fCActionsField As FCActions Private fCSourceField As FCSource Private iteratedRecordsAreInField As String Private ruleGuidField As String Private versionField As String '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...dev.mysite.com/settings/bpsprocesses/common")> Public Property Header() As Header Get Return Me.headerField End Get Set Me.headerField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...dev.mysite.com/settings/workflows/autoindex")> Public Property AIMatchOptionSettings() As AIMatchOptionSettings Get Return Me.aIMatchOptionSettingsField End Get Set Me.aIMatchOptionSettingsField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...dev.mysite.com/settings/workflows/autoindex")> Public Property ExtDBActions() As ExtDBActions Get Return Me.extDBActionsField End Get Set Me.extDBActionsField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/workflows/autoindex")> Public Property ExtDBSource() As ExtDBSource Get Return Me.extDBSourceField End Get Set Me.extDBSourceField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/workflows/autoindex")> Public Property ExternalDataSourceType() As String Get Return Me.externalDataSourceTypeField End Get Set Me.externalDataSourceTypeField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/workflows/autoindex")> Public Property FCActions() As FCActions Get Return Me.fCActionsField End Get Set Me.fCActionsField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/workflows/autoindex")> Public Property FCSource() As FCSource Get Return Me.fCSourceField End Get Set Me.fCSourceField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/workflows/autoindex")> Public Property IteratedRecordsAreIn() As String Get Return Me.iteratedRecordsAreInField End Get Set Me.iteratedRecordsAreInField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/workflows/autoindex")> Public Property RuleGuid() As String Get Return Me.ruleGuidField End Get Set Me.ruleGuidField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...dev.mysite.com/settings/workflows/autoindex")> Public Property Version() As String Get Return Me.versionField End Get Set Me.versionField = Value End Set End Property End Class '''<remarks/> <System.SerializableAttribute(), System.ComponentModel.DesignerCategoryAttribute("code"), System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:="http://dev.mysite.com/settings/bpsprocesses/common"), System.Xml.Serialization.XmlRootAttribute([Namespace]:="...//dev.mysite.com/settings/bpsprocesses/common", IsNullable:=False)> Partial Public Class Header Private guidField As String Private idField As UShort Private nameField As String Private descriptionField As String '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...dev.mysite.com/settings/interop")> Public Property Guid() As String Get Return Me.guidField End Get Set Me.guidField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/interop")> Public Property ID() As UShort Get Return Me.idField End Get Set Me.idField = Value End Set End Property '''<remarks/> <System.Xml.Serialization.XmlElementAttribute([Namespace]:="...//dev.mysite.com/settings/interop")> Public Property Name() As String Get Return Me.nameField End Get Set Me.nameField = Value End Set End Property '''<remarks/> Public Property Description() As String Get Return Me.descriptionField End Get Set Me.descriptionField = Value End Set End Property End Class '''<remarks/> . . . 然后我尝试从 Header 元素中读取信息: Private Sub DeserializeObject(ByVal filename As String) Console.WriteLine("Reading with XmlReader") Dim serializer As New XmlSerializer(GetType(AutoindexBundle.Header)) Dim fs As New FileStream(filename, FileMode.Open) Dim reader As XmlReader = XmlReader.Create(fs) Dim test As AutoindexBundle.Header test = CType(serializer.Deserialize(reader), AutoindexBundle.Header) fs.Close() Console.Write(test.Guid & ControlChars.Tab & test.ID & ControlChars.Tab & test.Name & ControlChars.Tab & test.Description & ControlChars.Tab) End Sub 但不幸的是,我在 test = CType(.... 行中收到以下错误消息: System.InvalidOperationException:“XML 文档 (1, 40) 中存在错误。” 内部 Ausnahme 1: InvalidOperationException:不是预期的。 我在这里做错了什么或者我必须改变什么才能使这项工作正常进行? 这是原始文件的缩短和中和版本: <AutoindexBundle xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://dev.mysite.com/settings/settingsExchange"> <Autoindex xmlns:d2p1="http://dev.mysite.com/settings/workflows/autoindex"> <Header xmlns="http://dev.mysite.com/settings/bpsprocesses/common"> <Guid xmlns="http://dev.mysite.com/settings/interop">978094cb-6cb5-4782-afdd-bf4cd11cf4ba</Guid> <ID xmlns="http://dev.mysite.com/settings/interop">469</ID> <Name xmlns="http://dev.mysite.com/settings/interop">X_SD_CLEAR_DEL</Name> <Description>Löscht die Einträge im Statusfeld</Description> </Header> <d2p1:AIMatchOptionSettings> <d2p1:MatchCodes/> <d2p1:MultiMatchMode>NoMatch</d2p1:MultiMatchMode> </d2p1:AIMatchOptionSettings> <d2p1:ExtDBActions> <d2p1:MatchActions> <d2p1:DeleteRow>false</d2p1:DeleteRow> <d2p1:Fields/> </d2p1:MatchActions> <d2p1:NoMatchActions> <d2p1:Fields/> <d2p1:InsertRow>false</d2p1:InsertRow> </d2p1:NoMatchActions> </d2p1:ExtDBActions> <d2p1:ExtDBSource> <d2p1:AIDataSource i:type="d2p1:FixedEntriesDataSource"> <d2p1:DSGuid>00000000-0000-0000-0000-000000000000</d2p1:DSGuid> <d2p1:SourceName i:nil="true"/> </d2p1:AIDataSource> <d2p1:DSFields/> <d2p1:FilterOption>AllDocuments</d2p1:FilterOption> <d2p1:UsedFilter xmlns:d4p1="http://dev.mysite.com/settings/filter"> <d4p1:Condition i:nil="true"/> <d4p1:Logic>And</d4p1:Logic> </d2p1:UsedFilter> </d2p1:ExtDBSource> <d2p1:ExternalDataSourceType>FixedEntries</d2p1:ExternalDataSourceType> <d2p1:FCActions> <d2p1:MatchActions> <d2p1:DeleteRow>false</d2p1:DeleteRow> <d2p1:Fields> <d2p1:IndexField i:type="d2p1:IndexDeletion"> <d2p1:Field>DEL</d2p1:Field> <d2p1:Value i:nil="true"/> </d2p1:IndexField> </d2p1:Fields> </d2p1:MatchActions> <d2p1:NoMatchActions> <d2p1:Fields/> <d2p1:InsertRow>false</d2p1:InsertRow> </d2p1:NoMatchActions> </d2p1:FCActions> <d2p1:FCSource> <d2p1:AIDataSource i:type="d2p1:FileCabinetDataSource"> <d2p1:DSGuid>0c3b26ac-305e-48c5-952b-6aee1518cd50</d2p1:DSGuid> <d2p1:SourceName>Stammdaten</d2p1:SourceName> <d2p1:UserLogin> <d2p1:ComputerAddress i:nil="true"/> <d2p1:IsFixedLogin>true</d2p1:IsFixedLogin> <d2p1:IsLoggedInOtherSystem>false</d2p1:IsLoggedInOtherSystem> <d2p1:Organization>myBusiness</d2p1:Organization> <d2p1:Password i:nil="true"/> <d2p1:Port>0</d2p1:Port> <d2p1:ReadOnly>false</d2p1:ReadOnly> <d2p1:Token i:nil="true"/> <d2p1:User>Mustermann</d2p1:User> <d2p1:UserGuid>3e90584f-ec45-4a94-b6dc-1216e3b3143e</d2p1:UserGuid> </d2p1:UserLogin> </d2p1:AIDataSource> <d2p1:DSFields> <d2p1:DataSourceField> <d2p1:DisplayName>ADRESSNUMMER</d2p1:DisplayName> <d2p1:InternalType>Normal</d2p1:InternalType> <d2p1:IsReadonly>false</d2p1:IsReadonly> <d2p1:Length>-1</d2p1:Length> <d2p1:Name>ADRESSNUMMER</d2p1:Name> <d2p1:Type>Text</d2p1:Type> </d2p1:DataSourceField> <d2p1:DataSourceField> <d2p1:DisplayName>NAME_1</d2p1:DisplayName> <d2p1:InternalType>Normal</d2p1:InternalType> <d2p1:IsReadonly>false</d2p1:IsReadonly> <d2p1:Length>-1</d2p1:Length> <d2p1:Name>NAME_1</d2p1:Name> <d2p1:Type>Text</d2p1:Type> </d2p1:DataSourceField> <d2p1:DataSourceField> <d2p1:DisplayName>NAME_2</d2p1:DisplayName> <d2p1:InternalType>Normal</d2p1:InternalType> <d2p1:IsReadonly>false</d2p1:IsReadonly> <d2p1:Length>-1</d2p1:Length> <d2p1:Name>NAME_2</d2p1:Name> <d2p1:Type>Text</d2p1:Type> </d2p1:DataSourceField> <d2p1:DataSourceField> <d2p1:DisplayName>NAME_3</d2p1:DisplayName> <d2p1:InternalType>Normal</d2p1:InternalType> <d2p1:IsReadonly>false</d2p1:IsReadonly> <d2p1:Length>-1</d2p1:Length> <d2p1:Name>NAME_3</d2p1:Name> <d2p1:Type>Text</d2p1:Type> </d2p1:DataSourceField> <d2p1:DataSourceField> <d2p1:DisplayName>NAME_4</d2p1:DisplayName> <d2p1:InternalType>Normal</d2p1:InternalType> <d2p1:IsReadonly>false</d2p1:IsReadonly> <d2p1:Length>-1</d2p1:Length> <d2p1:Name>NAME_4</d2p1:Name> <d2p1:Type>Text</d2p1:Type> </d2p1:DataSourceField> <d2p1:DataSourceField> <d2p1:DisplayName>MATCHCODE</d2p1:DisplayName> <d2p1:InternalType>Normal</d2p1:InternalType> <d2p1:IsReadonly>false</d2p1:IsReadonly> <d2p1:Length>-1</d2p1:Length> <d2p1:Name>MATCHCODE</d2p1:Name> <d2p1:Type>Text</d2p1:Type> </d2p1:DataSourceField> </d2p1:DSFields> <d2p1:FilterOption>Filter</d2p1:FilterOption> <d2p1:UsedFilter xmlns:d4p1="http://dev.mysite.com/settings/filter"> <d4p1:Condition i:type="d4p1:ExtendedCondition"> <d4p1:ExtendedQuery xmlns:d6p1="http://dev.mysite.com/settings/web/querybuilder"> <d6p1:Root> <d6p1:Conditions> <d6p1:BaseCondition i:type="d6p1:Condition"> <d6p1:DBName>DEL</d6p1:DBName> <d6p1:Provider i:type="d6p1:EmptyConditionProvider"> <d6p1:Operation>NotEmpty</d6p1:Operation> </d6p1:Provider> </d6p1:BaseCondition> </d6p1:Conditions> <d6p1:Operation>Or</d6p1:Operation> </d6p1:Root> </d4p1:ExtendedQuery> </d4p1:Condition> <d4p1:Logic>And</d4p1:Logic> </d2p1:UsedFilter> </d2p1:FCSource> <d2p1:IteratedRecordsAreIn>FileCabinet</d2p1:IteratedRecordsAreIn> <d2p1:RuleGuid>00000000-0000-0000-0000-000000000000</d2p1:RuleGuid> <d2p1:Version>5.1.0.1</d2p1:Version> </Autoindex> <Guid>978094cb-6cb5-4782-afdd-bf4cd11cf4ba</Guid> <Rule xmlns:d2p1="http://dev.mysite.com/settings/notification" i:nil="true"/> <ScheduleSettings xmlns:d2p1="http://dev.mysite.com/settings/common/dwschedule" i:nil="true"/> </AutoindexBundle>```
我需要生成一个架构,该架构将生成具有 3 个不同名称空间的 XML 输出,但不应有任何前缀用于引用元素或名称空间。更具体地说,...