xml 相关问题

可扩展标记语言(XML)是一种灵活的结构化文档格式,用于定义人类和机器可读的编码规则。

外部 DTD 未解析/“实体未定义错误”

我没有获得外部 DTD(同一文件夹中的本地文件)来使用相对或绝对路径。它不会扩展变量并在 Firefox 和 xmlstarlet 中给出错误。

回答 1 投票 0

OnLoad 函数中的 self nil

我正在尝试使用 Lua 为 vanilla wow 创建一个简单的插件,第一个任务是初始化一些 UI 并调用一个函数进行初始配置。 MyAddonName.xml 我正在尝试使用 Lua 为 vanilla wow 创建一个简单的插件,第一个任务是初始化一些 UI 并调用一个函数进行初始配置。 MyAddonName.xml <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ https://raw.githubusercontent.com/Gethe/wow-ui-source/live/Interface/AddOns/Blizzard_SharedXML/UI.xsd"> <Frame name="MyAddonName" parent="UIParent"> <Size x="384" y="512" /> <Anchors> <Anchor point="CENTER" relativePoint="CENTER" relativeTo="UIParent" /> </Anchors> <Layers> <Layer level="BACKGROUND"> <Texture name="$parent_Portrait" parentKey="portrait" file="Interface\Icons\INV_Misc_EngGizmos_30"> <Size x="60" y="60" /> <Anchors> <Anchor point="TOPLEFT"> <Offset x="7" y="-6" /> </Anchor> </Anchors> </Texture> </Layer> </Layers> <Scripts> <OnLoad function="MyAddonName_OnLoad" /> </Scripts> </Frame> </Ui> MyAddonName.lua function Print(msg, r, g, b) DEFAULT_CHAT_FRAME:AddMessage("|c0033ffccMyAddonName|r "..msg.."", r, g, b) end function MyAddonName_OnLoad(self) Print("loaded"..tostring(self), 0, 1, 0) // <- self exists self.items = {} end function MyAddonName_TestFunct() Print(MyAddonName.items) or Print(self.items) // <- not exists, attempt to index field 'items' (a nil value) end MyAddonName_TestFunct稍后会调用,出于测试目的,我刚刚从调用了它 /run MyAddonName_TestFunct() /run MyAddonName_TestFunct() 我假设在从xml部分加载插件后,将调用带有self的MyAddonName_OnLoad,其中self是代表插件实例的表,稍后在某些事件中我可以调用MyAddonName_TestFunct,并将一些初始值存储在可访问的表中通过self。 我检查了其他插件(例如BetterCharacterStats)并且有类似的代码,例如 BetterCharacterStats.lua function BCS:OnLoad() // `BCS:` means that self passed implicitly 我还注意到表BSC显式创建,但因此我在检查期间有self - 这对我来说不需要。 ---- 这是一个更完整的示例我测试过(使用更多代码)-我正在尝试遵循一些教程,现在结果有点不同 这是打印的结果 输出图像 任何人都可以建议我错在哪里吗? 您在 OnLoad 事件期间遇到的 self 为零的问题是《魔兽世界》UI 脚本中的一个常见问题,尤其是对于自定义框架。这种情况通常会发生,因为当 OnLoad 脚本被触发时,对 self 的引用不会按照您期望的方式自动传递,特别是当它是自定义框架或按钮时。 原因如下: 在 WoW 中,当您将 self 事件与 OnLoad 或 frame 结合使用时,button 参数通常由系统自动传入。但是,如果在 OnLoad 内处理 XML 事件,则当事件触发时,frame 可能尚未完全初始化,或者 XML 设置可能无法正确链接到 Lua 函数。 根本原因 OnLoad 事件通常在框架加载时触发,但在某些情况下(取决于上下文), self 可能不会按预期引用框架。 直接在Lua中引用框架 如果你不想改变XML,你可以修改Lua函数来直接获取框架的引用,即使self是nil。您可以通过在 frame 函数中按名称引用 MyAddonName_OnLoad 来实现此目的。 修复: local frame = self or MyAddonName -- Fallback to MyAddonName if self is nil

回答 1 投票 0

非嵌套记录集的嵌套 for 循环

我的输入xml如下 1 FFC1 我的输入xml如下 <ns0:ProjectSync xmlns:ns0="http://XSLMapTesting.ProjectSync"> <Funder> <OID>1</OID> <FFC>FFC1</FFC> </Funder> <Funder> <OID>2</OID> <FFC></FFC> </Funder> <Funder> <OID>3</OID> <FFC>FFC3</FFC> </Funder> <Funder> <OID>4</OID> <FFC></FFC> </Funder> <ActiveBudget> <BudgetLines> <Fund> <ID>1</ID> </Fund> </BudgetLines> <BudgetLines> <Fund> <ID>4</ID> </Fund> </BudgetLines> </ActiveBudget> </ns0:ProjectSync> 我的映射xslt代码如下 <xsl:template match="/"> <xsl:apply-templates select="/s0:ProjectSync" /> </xsl:template> <!-- //////////////////////////////////////// ProjectSync template //////////////////////////////////////// --> <xsl:template match="/s0:ProjectSync"> <ns0:Projects> <Project> <Funders> <xsl:apply-templates select="Funder[*]" /> </Funders> <Budgets> <xsl:apply-templates select="ActiveBudget/BudgetLines[*]" /> </Budgets> </Project> </ns0:Projects> </xsl:template> <!-- //////////////////////////////////////// Funders template //////////////////////////////////////// --> <xsl:template match="Funder"> <Funder> <ID> <xsl:choose> <xsl:when test="FFC != ''"> <xsl:value-of select="FFC/text()"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="OID/text()" /> </xsl:otherwise> </xsl:choose> </ID> </Funder> </xsl:template> <!-- //////////////////////////////////////// BudgetLines template //////////////////////////////////////// --> <xsl:template match="ActiveBudget/BudgetLines"> <BudgetLine> <FundID> <xsl:value-of select="Fund/ID/text()" /> </FundID> </BudgetLine> </xsl:template> </xsl:stylesheet> 在上面的“BudgetLines 模板”中,我想应用一个逻辑,例如对于每个预算线,它都会迭代资助者记录集,并查看是否找到具有相同 ID 的资助者并且还填充了 FFC,然后应该映射 FFC。否则,基金/ID 应映射到输出 xml 中。下面的代码也定义了同样的逻辑: for-each select="BudgetLine" for-each select="Funder" choose when test="BudgetLine/Fund/ID = Funder/OID & Funder/FFC != ''" <xsl:value-of select="Funder/FFC/text()" /> break; otherwise <xsl:value-of select="BudgetLine/Fund/ID/text()" /> 上述 xml 的预期输出应如下所示 <ns0:Projects xmlns:ns0="http://XSLMapTesting.Projects"> <Project> <Funders> <Funder> <ID>FFC1</ID> </Funder> <Funder> <ID>2</ID> </Funder> <Funder> <ID>FFC3</ID> </Funder> <Funder> <ID>4</ID> </Funder> </Funders> <Budgets> <BudgetLine> <FundID>FFC1</FundID> </BudgetLine> <BudgetLine> <FundID>4</FundID> </BudgetLine> </Budgets> </Project> </ns0:Projects> 我该如何在 xsl 中实现这一点? 谢谢你 如果我正确理解您的要求,我建议您这样做: XSLT 1.0 <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:strip-space elements="*"/> <xsl:key name="funder" match="Funder" use="OID" /> <!-- identity transform --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="Funder"> <xsl:copy> <ID> <xsl:choose> <xsl:when test="FFC/text()"> <xsl:value-of select="FFC"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="OID"/> </xsl:otherwise> </xsl:choose> </ID> </xsl:copy> </xsl:template> <xsl:template match="ActiveBudget"> <Budgets> <xsl:apply-templates/> </Budgets> </xsl:template> <xsl:template match="BudgetLines"> <xsl:variable name="funder" select="key('funder', Fund/ID)" /> <BudgetLine> <FundID> <xsl:choose> <xsl:when test="$funder/FFC/text()"> <xsl:value-of select="$funder/FFC"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$funder/OID"/> </xsl:otherwise> </xsl:choose> </FundID> </BudgetLine> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

Powershell 如何过滤 XML 节点

我正在寻找一种过滤 XML 文件的方法。我找不到好的教程,所以我在这里问: 为此,这里有一个小的 XML 示例: <

回答 1 投票 0

如何从 DataContract 类中的 KnownType 中删除类型属性?

是否可以使用 KnownType 的类名而不是父类作为标签?例如 这是较大的 DataContract xml 文件的摘录, [DataContract (命名空间 = "projectNames...

回答 1 投票 0

我可以“覆盖”派生类中 DataMember 的名称吗?

我必须实施一些协议。我需要序列化的所有 xml(WCF 合约)始终具有两个指定部分和一个“内容”部分 - 例如: 第一的: 我必须实施一些协议。我需要序列化的所有 xml(WCF 合约)始终具有两个指定部分和一个“内容”部分 - 例如: 第一: <X> <Y> <Content1/> </Y> </X> 第二: <X> <Y> <Content2/> </Y> </X> 我想使用一些泛型,但随后出现了节点名称的问题。 我找到了这个答案:序列化 DataMember(名称)覆盖问题,但它不适合我。 我的方法的代码: public class X<TContent> { [DataMember] public Y<TContent> yName { get; set; } } public class Y<TContent> { [DataMember] public virtual TContent Content { get; set; } } 然后有一些“内容”类,例如: public sealed class Content1Class: Y<Content1> { [DataMember(Name = nameof(Content1))] public override Content1 Content { get; set; } } 不幸的是,我的内容始终为空。 我的问题是: 我可以设置类之间的属性和关系来反序列化上述情况吗?也许我必须为每种内容类型创建单独的类? 您几乎明白了,并且 nameof 的想法将会奏效。其他一切都通过泛型类型约束和具有泛型属性的泛型类来解决。 考虑这个代码示例: using System.Runtime.Serialization; using FileStream = System.IO.FileStream; using FileMode = System.IO.FileMode; static class DefinitionSet { internal const string dataContractNamespace = "https/www.my.site.org/contracts/demo"; internal const string filename = "demo.xml"; } //DefinitionSet [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class X<ContentType> where ContentType : Content { [DataMember(Name = nameof(Y))] Y<ContentType> y = new(); internal Y<ContentType> Y => y; } [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class Y<ContentType> where ContentType : Content { [DataMember(Name = nameof(ContentType))] internal ContentType Content { get; set; } } //Y [DataContract(Namespace = DefinitionSet.dataContractNamespace)] [KnownType(typeof(Content1))] [KnownType(typeof(Content2))] public abstract class Content { } //Content [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class Content1 : Content { public Content1() { Index = 13; Message = nameof(Message); } [DataMember] internal int Index { get; private init; } [DataMember] internal string Message { get; private init; } } [DataContract(Namespace = DefinitionSet.dataContractNamespace)] public class Content2 : Content { public Content2() { Comment = nameof(Comment); Topic = nameof(Topic); } [DataMember] internal string Comment { get; private init; } [DataMember] internal string Topic { get; private init; } } static class DataContractDemo { static void TestSerialization<ContentType>() where ContentType : Content, new() { X<ContentType> objectGraph = new(); objectGraph.Y.Content = new ContentType(); DataContractSerializer dcs = new(typeof(X<ContentType>)); using var writeStream = new FileStream( $"{typeof(ContentType).Name}.{DefinitionSet.filename}", FileMode.Create); dcs.WriteObject(writeStream, objectGraph); } //TestSerialization static void Main() { TestSerialization<Content1>(); TestSerialization<Content2>(); } //Main } //class DataContractDemo 我希望这个代码示例是自我记录的。如果有不清楚的地方,请进一步提问。

回答 1 投票 0

无法使用 dbxml 找到元素“Root”的声明

我是 XML 新手。我正在尝试导入 XML 文件,但收到错误 - “找不到元素“根”的声明”。我怀疑这是因为名称空间 URI (http://xmlns.oracle.com...

回答 2 投票 0

在mxgraph和react中加载diagram.xml时无显示

我正在使用mxgraph和react执行一个项目,其中我想实现一个功能,允许加载保存在xml文件中的图表,但是加载图表时,图表不显示...

回答 1 投票 0

寻求生成符合EN16931(ZugFERD)标准的电子发票xml的模板

我们的小公司被要求提供符合欧盟标准的电子发票。我找到了Python包factur-x,以及libreoffice的factur-x插件。不幸的是后者只产生 mi...

回答 2 投票 0

用于创建 XML 的 Python 脚本

我正在准备一个Python脚本来创建一个XML,例如: 1.0 ...

回答 1 投票 0

在Python中解析Google Earth KML文件(lxml,命名空间)

我正在尝试使用 xml 模块将 .kml 文件解析为 Python(在我用于 HTML 的 BeautifulSoup 中未能完成此操作之后)。 因为这是我第一次这样做,所以我就跟着走了......

回答 2 投票 0

使用 groovy 迭代每个 xml 节点,打印每个节点

我有一个简单的 XML 文件,如下所示: 123 ...

回答 1 投票 0

回答 1 投票 0

以正确的顺序/顺序将元素插入到 XML 代码中? Python代码

我是 Python 新手,我正在尝试创建一个脚本来打开 XML 文件并将 XML 元素插入到 XML 元素序列中的正确位置。 到目前为止,我有这个代码: 小鬼...

回答 1 投票 0

从命名空间中提取 XML 元素的正确方法

在 Python 脚本中,我调用 SOAP 服务,该服务返回 XML 回复,其中元素具有命名空间前缀,比方说 一个...

回答 1 投票 0

循环 XML 数据并使用 SQL 存储过程插入到另一个表中

我有这个XML: A1234 美国11 11/8/2024 6:54:03 上午 我有这个 XML: <Root> <NEW_BATCH_NUM>A1234</NEW_BATCH_NUM> <NEW_LOCATION>US11</NEW_LOCATION> <TRANSACTION_DATE>11/8/2024 6:54:03 AM</TRANSACTION_DATE> <CHILD_BATCHES> <CHILDBATCH> <BATCH_NUM>C101</BATCH_NUM> <QTY>1500</QTY> </CHILDBATCH> <CHILDBATCH> <BATCH_NUM>C102</BATCH_NUM> <QTY>2000</QTY> </CHILDBATCH> </CHILD_BATCHES> </Root> 需求基于CHILDBATCH节点,我需要使用SQL存储过程将数据插入到另一个表中。 预期结果是 NEW_BATCH_NUM NEW_LOCATION CHILD_BATCH_NUM QTY ------------------------------------------------------ A1234 US11 C101 1500 A1234 US11 C102 2000 请在此指导。 此类操作不需要循环。它可以作为基于集合的操作来完成。 XQuery .nodes() 方法正在将 XML 转换为矩形/关系格式。 CROSS APPLY正在模拟一对多关系。 SQL DECLARE @parameter XML = N'<Root> <NEW_BATCH_NUM>A1234</NEW_BATCH_NUM> <NEW_LOCATION>US11</NEW_LOCATION> <TRANSACTION_DATE>11/8/2024 6:54:03 AM</TRANSACTION_DATE> <CHILD_BATCHES> <CHILDBATCH> <BATCH_NUM>C101</BATCH_NUM> <QTY>1500</QTY> </CHILDBATCH> <CHILDBATCH> <BATCH_NUM>C102</BATCH_NUM> <QTY>2000</QTY> </CHILDBATCH> </CHILD_BATCHES> </Root>'; -- INSERT INTO targetTable -- uncomment when you are ready SELECT NEW_BATCH_NUM = p.value('(NEW_BATCH_NUM/text())[1]', 'VARCHAR(30)') , NEW_LOCATION = p.value('(NEW_LOCATION/text())[1]', 'VARCHAR(30)') , CHILD_BATCH_NUM = c.value('(BATCH_NUM/text())[1]', 'VARCHAR(30)') , QTY = c.value('(QTY/text())[1]', 'INT') FROM @parameter.nodes('/Root') AS A(p) -- parent CROSS APPLY A.p.nodes('CHILD_BATCHES/CHILDBATCH') AS B(c); -- child 输出 NEW_BATCH_NUM NEW_LOCATION CHILD_BATCH_NUM 数量 A1234 美国11 C101 1500 A1234 美国11 C102 2000

回答 1 投票 0

资源“attr/actionBarSize”的值重复

我正在尝试将react-native从0.74.3升级到0.76.2并在android上构建,但出现以下错误: /Users/xxx/.gradle/caches/8.10.2/transforms/0fd0166c4f0b7f2b3a94f0420432a518/transformed/

回答 1 投票 0

通过 XSD 删除 XML 的元素/属性

我想删除 .xml 文件中与 .xsd 文件定义不匹配的所有元素和/或属性。 我提供了 XML-XSD 文件对的简化版本,但它们实际上有更多属性......

回答 1 投票 0

GetManifestResourceNames 返回空数组

我正在尝试将 xml 文件加载到方法中来处理它。我有两个项目:SignalServer 和 DbLibrary。在 DbLibrary 内部有一个 SQLQuery 类,它有一个方法 GetResourceTextFile(string

回答 1 投票 0

XML签名:如何计算摘要值?

我有一个像这样的XML A B <...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.