命名空间是一个容器,它为标识符提供上下文,其中名称是唯一的。
我遇到了名称冲突,因此决定使用命名空间,但我在尝试使用 psr-4 自动加载实现命名空间时遇到了问题。我观看了几个视频来学习并尝试......
如何在 XML selectNodes 和 selectSingleNode 中使用命名空间
我正在将 VBA Access 应用程序从 Win7 移植到 Win11,我认为应该有一种方法可以做得更优雅。我必须阅读这个 .xml 文件: 我正在将 VBA Access 应用程序从 Win7 移植到 Win11,我认为应该有一种方法可以做得更优雅。我必须阅读这个 .xml 文件: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Document xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08 camt.053.001.08.xsd" xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <BkToCstmrStmt> <GrpHdr> <MsgId>MSG-C053-231229020607-01</MsgId> <CreDtTm>2023-12-29T14:06:07.386+01:00</CreDtTm> <AddtlInf>RECONSTRUCTION</AddtlInf> </GrpHdr> <Stmt> <Id>STM-C053-231229020607-01</Id> <ElctrncSeqNb>999999</ElctrncSeqNb> <CreDtTm>2023-12-29T14:06:07.386+01:00</CreDtTm> <FrToDt> <FrDtTm>2023-11-29T00:00:00.000+01:00</FrDtTm> <ToDtTm>2023-12-28T23:59:59.999+01:00</ToDtTm> </FrToDt> <CpyDplctInd>DUPL</CpyDplctInd> <Acct> <Id> <IBAN>CHxxxxxxxxxxxxxxxxx</IBAN> </Id> <Ccy>CHF</Ccy> <Ownr> <Nm>Entity</Nm> </Ownr> <Svcr> <FinInstnId> <Nm>Name of Bank</Nm> </FinInstnId> </Svcr> </Acct> <Bal> <Shortened> </Shortened> </Bal> <Bal> <Shortened> </Shortened> </Bal> <Ntry> <Shortened> </Shortened> </Ntry> </Stmt> </BkToCstmrStmt> </Document> 在Win7中使用\Windows\system32\msxml6.dll,这段代码做得很完美: Sub ReadCamt053(strDPFE As String) Dim bankDownload As MSXML2.DOMDocument Set bankDownload = New MSXML2.DOMDocument bankDownload.validateOnParse = True bankDownload.Load strDPFE Dim groupHeader As IXMLDOMNode For Each groupHeader In bankDownload.selectNodes("Document/BkToCstmrStmt/GrpHdr") Debug.Print "Erzeugungsdatum(CreDtTm)", groupHeader.selectSingleNode("CreDtTm").Text Next groupHeader Dim accountStatement As IXMLDOMNode For Each accountStatement In bankDownload.selectNodes("Document/BkToCstmrStmt/Stmt") gIBAN = accountStatement.selectSingleNode("Acct/Id/IBAN").Text gSequenzNr = accountStatement.selectSingleNode("ElctrncSeqNb").Text ReadStatementEntries accountStatement.selectNodes("Ntry") Next accountStatement End Sub 对于Win11 \Windows\SysWOW64\msxml6.dll 的移植,选择了XML,这需要使用DOMDocument60 而不是DOMDocument。使用 Google,我从 MS 找到了 this,并假设我必须添加一个命名空间才能读取 XML。我这样做了,但我无法找到一种优雅的方式来添加 groupHeader.selectSingleNode("CreDtTm").Text 的名称空间 - groupHeader.selectSingleNode("/ns:CreDtTm").Text 导致错误 91,使用 groupHeader.selectSingleNode("/bk:Document/bk:BkToCstmrStmt/bk:GrpHdr/bk:CreDtTm").Text 有效,但似乎很难阅读...... Sub ReadCamt053(strDPFE As String) Dim bankDownload As MSXML2.DOMDocument60 Set bankDownload = New MSXML2.DOMDocument60 bankDownload.validateOnParse = True bankDownload.SetProperty "SelectionNamespaces", "xmlns:ns='urn:iso:std:iso:20022:tech:xsd:camt.053.001.08'" bankDownload.Load strDPFE Dim groupHeader As IXMLDOMNode For Each groupHeader In bankDownload.selectNodes("/ns:Document/ns:BkToCstmrStmt/ns:GrpHdr") Debug.Print "Erzeugungsdatum(CreDtTm)", groupHeader.selectSingleNode("CreDtTm").Text '<--- Next groupHeader Dim accountStatement As IXMLDOMNode For Each accountStatement In bankDownload.selectNodes("Document/BkToCstmrStmt/Stmt") gIBAN = accountStatement.selectSingleNode("Acct/Id/IBAN").Text gSequenzNr = accountStatement.selectSingleNode("ElctrncSeqNb").Text ReadStatementEntries accountStatement.selectNodes("Ntry") Next accountStatement End Sub 我对 .XML 的了解非常有限(尝试错误)。所以这是我的两个问题: 有没有比 groupHeader.selectSingleNode("/bk:Document/bk:BkToCstmrStmt/bk:GrpHdr/bk:CreDtTm") 更好的方法 有关这个名称空间的整个内容看起来相当笨拙。有没有办法在不不断重复名称空间的情况下做到这一点 - 我确实只有这个单一的名称空间,所以这似乎是一个巨大的杀伤力......旧的东西完成了工作,看起来好多了...... 1- 如果添加命名空间,则修改代码如下: For Each groupHeader In bankDownload.selectNodes("ns:Document/ns:BkToCstmrStmt/ns:GrpHdr") Debug.Print "Erzeugungsdatum(CreDtTm)", groupHeader.selectSingleNode("ns:CreDtTm").Text Next groupHeader For Each accountStatement In bankDownload.selectNodes("ns:Document/ns:BkToCstmrStmt/ns:Stmt") gIBAN = accountStatement.selectSingleNode("ns:Acct/ns:Id/ns:IBAN").Text gSequenzNr = accountStatement.selectSingleNode("ns:ElctrncSeqNb").Text ReadStatementEntries accountStatement.selectNodes("ns:Ntry") Next accountStatement 或 2- 从文档中删除命名空间,使 <Document xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08 camt.053.001.08.xsd" xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.08" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 变为 <Document> 并像以前一样使用原始代码: Const s1 = "xsi:schemaLocation=""urn:iso:std:iso:20022:tech:xsd:camt.053.001.08 camt.053.001.08.xsd""" Const s2 = "xmlns=""urn:iso:std:iso:20022:tech:xsd:camt.053.001.08""" Const s3 = "xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""" Dim bankDownload As New MSXML2.DOMDocument60 bankDownload.validateOnParse = False bankDownload.Load Path_To_XML_File Dim xml As String xml = bankDownload.xml xml = Replace(xml, s1, "") xml = Replace(xml, s2, "") xml = Replace(xml, s3, "") bankDownload.loadXML xml Dim groupHeader As IXMLDOMNode For Each groupHeader In bankDownload.selectNodes("Document/BkToCstmrStmt/GrpHdr") Debug.Print "Erzeugungsdatum(CreDtTm)", groupHeader.selectSingleNode("CreDtTm").Text Next groupHeader Dim accountStatement As IXMLDOMNode For Each accountStatement In bankDownload.selectNodes("Document/BkToCstmrStmt/Stmt") gIBAN = accountStatement.selectSingleNode("Acct/Id/IBAN").Text gSequenzNr = accountStatement.selectSingleNode("ElctrncSeqNb").Text ReadStatementEntries accountStatement.selectNodes("Ntry") Next accountStatement
C++:是否有安全且可接受的方法来减少 std:: 前缀的使用? [已关闭]
随着大量现代 C++ 创新发生在 std 命名空间中,在代码中 std:: 限定符出现得越来越频繁。虽然这肯定有优点,但代码确实变得
解析 staging-ingress.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 5 行:此上下文中不允许映射值
我请求您的支持,您能帮我解决为什么当我在 Azure AKS 上运行以下脚本时出现以下错误吗? “解析 staging-ingress.yaml 时出错:转换时出错...
我想知道是否有任何可靠且一致的方法来获取Python包的“导入名称”/命名空间。例如; 包裹; Django 干草堆 导入名称;草垛 或者 包裹;蟒蛇 导入...
在我的 React-TypeScript-Electron 项目中,我有: “开发依赖项”:{ "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0" }, “依赖...
如何使用 ES6 模块分配命名空间?我想用 jQuery 做例子,其中命名空间是 $,但按照预期的 ES6 方式进行。我的所有模块都在单独的文件中构建
我正在尝试使用另一个文件创建一个 XSLT 文件, 1.0 我正在尝试使用另一个 XSLT 文件创建一个 XSLT 文件, <xsl:element name="xsl:stylesheet"> <xsl:attribute name="version">1.0</xsl:attribute> <xsl:attribute name="xmlns:msxsl">urn:schemas-microsoft-com:xslt</xsl:attribute> <xsl:attribute name="xlink">http://www.w3.org/1999/xlink</xsl:attribute> <xsl:attribute name="exclude-result-prefixes">msxsl</xsl:attribute> <xsl:apply-templates select="Root"/> </xsl:element> 第二个属性有一个命名空间“xmlns”,它会抛出错误:前缀未定义。 没有第三个属性 xlink 中的命名空间,它也可以正常工作。 那么如何指定命名空间呢? 谢谢你 您无法使用 xsl:attribute 创建名称空间节点,因为在 XSLT 数据模型中,名称空间和属性是不同的东西。 在结果树中创建命名空间节点有多种方法: (a) 如果您从源树复制一个元素(例如使用 <xsl:copy-of/>),那么它的命名空间也会被复制。 (b) 如果您在样式表中编写文字结果元素(例如 <thing xmlns:z="http://z/"/> 那么它的命名空间也会被复制,即使它们没有在任何元素或属性名称中使用。 (c) 如果使用 xsl:element 构造元素,则元素名称或其属性名称中使用的任何命名空间将通过称为命名空间修复的过程自动出现在结果树中。 (d) 从 XSLT 2.0 开始,有一个 xsl:namespace 指令供上述所有方法失败时使用。 您没有说明您正在使用哪个版本的 XSLT,这始终是一个错误,但由于您的代码提到了 msxsl 那么我猜它可能是旧版 XSLT 1.0。如果是这样的话,我认为你有两个选择: (1) 将文字结果元素与 xsl:namespace-alias 一起使用 - 在规范和其他地方有很多这样的示例。 (2) 创建一个结果树片段,如下所示: <xsl:variable name="dummy"> <msxml:dummy xmlns:msxml="..."/> </xsl:variable> 然后使用 <xsl:copy-of select="exslt:node-set($dummy)//namespace::*"/> 将其命名空间复制到最终结果树中
为什么 StyleCopAnalyzers 认为全局 using 应该在命名空间内声明,而这种语法是不可能的?
我正在创建一个 NUnit 测试项目,在创建该项目时,MS Visual Studio 创建了一个名为Usings.cs 的文件,其中包含以下行 全局使用 NUnit.Framework; 这告诉项目包括...
为什么 std::errno 不存在,而“errno”却存在?
为了让我的代码更符合C++风格而不是C风格,我想用std::errno替换errno,用include 替换include 。 令我惊讶的是,
是否可以将 Spark 中的表从一个命名空间转移到另一个命名空间,就像我们通过命令 ALTER SCHEMA new_schema_name TRANSFER 更改 SQL Server 中表的架构一样
我正在开发代码生成器,并且想要获取名称空间的路径。 也就是说,给定名称空间“App\Controller”,我想获取“src/Controller”。 我知道如何获取该信息...
.spatstat.geom 包中的 C() 函数在 R 中不可用,尽管它是由 useDynLib 导出的
CRAN R 包 spatstat.geom 定义了一堆 .C 函数,并通过以下方式将它们导出到 NAMESPACE 文件中 useDynLib(spatstat.geom, .registration=TRUE, .fixes="SG_") 但我无法访问...
有人告诉我,你可以更改命名空间的名称,这种方法对于长命名空间来说看起来非常方便。 我最近偶然发现了这个“技术”,有人说......
这个问题基于这两个 stackoverflow 帖子: 头文件中的多个定义 命名空间函数的多重定义 问题是:为什么多重定义不会出错
附加物体的好处(你可以跳过这个) 在源脚本中,可以很方便地定义我们的辅助函数,如下所示: <- function() print('hi') e <- new.env() assign("f"...
我经常遇到 XML,其中相同的命名空间被定义多次,而不是仅在需要它的元素的父元素处定义。 有没有一个简单的方法/工具来提取所有
我有一个项目,其命名空间和类定义如下 命名空间 My.Company.Project.Models { 类项目 {...} } 然后在另一个项目中我尝试使用此类: 使用 My.Company.Projec...
我正在查看 pytorch 代码库,我看到同一范围内有多个匿名命名空间,例如 https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/native/quantized/cpu /qpool.cpp#L23 和
我认为在 R 中,我可以使用 search() 或在 Rstudio 中单击全局环境之外的箭头来查看所有附加的包。 然而,我似乎看不到当前名称空间中的包。 我