xml 相关问题

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

XSD 架构;在元素序列中,是否有任何方法可以指定允许任意数量的未指定的附加元素?

所以,我想编写一个 XSD,检查元素列表是否包含特定的必需元素,但除了它们之外,在列表的任何位置都允许任何数量的其他元素。难道是……

回答 1 投票 0

XML 签名参考消化值与预期不同(可能没有正确执行 exc c14n)

我必须创建一个获取 SAML 票证的请求,但我被摘要值困住了。 据我了解,我必须使用专有的 c14n,然后是 sha256,然后是 base64,但我收到不同的...

回答 1 投票 0

TALLY - 用于导出凭证主理货数据的 Http api

我尝试使用xml通过http api导出凭证的依赖主控,以从理货中导出它。通过这些方式。我可以单独获取库存物品、账本、凭证。但无法...

回答 1 投票 0

如何搜索 XML 负载?

我正在尝试向网站添加一些快速且简单的搜索功能。该网站有一个包含所有商店的 XML 文件,我想创建一个搜索框来搜索距离用户最近的商店...

回答 5 投票 0

返回定义元素的 XPath 查询是什么

我试图在下面的响应中取消“响应的测试结果”值。这来自通过 SOAP 进行的 API 调用。 我需要查询元素中的值,但为了生命......

回答 1 投票 0

Python lxml - 如何删除空的重复标签

我有一些由脚本生成的 XML,可能有也可能没有空元素。有人告诉我现在 XML 中不能有空元素。这是一个例子: <...

回答 2 投票 0

C#.NET XML 序列化:XMLAttribute 未设置名称空间,只有 UserName 对象中的密码元素具有属性

我正在尝试生成此 Soap XML: 我正在尝试生成此 Soap XML: <soapenv:Envelope xmlns:bsvc="urn:com.workday/bsvc" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <wsse:Security soapenv:mustUnderstand="1"> <wsse:UsernameToken> <wsse:Username>TestUser02</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Password1</wsse:Password> </wsse:UsernameToken> </wsse:Security> <bsvc:Workday_Common_Header> <bsvc:Include_Reference_Descriptors_In_Response>1</bsvc:Include_Reference_Descriptors_In_Response> </bsvc:Workday_Common_Header> </soapenv:Header> <soapenv:Body> <bsvc:Get_Customers_Request bsvc:version="v42.0"> <bsvc:Request_References> <bsvc:Customer_Reference bsvc:Descriptor="?"> <bsvc:ID bsvc:type="Customer_ID">100001</bsvc:ID> </bsvc:Customer_Reference> </bsvc:Request_References> <bsvc:Response_Group> <bsvc:Include_Reference>0</bsvc:Include_Reference> <bsvc:Include_Customer_Data>0</bsvc:Include_Customer_Data> <bsvc:Include_Customer_Balance>1</bsvc:Include_Customer_Balance> <bsvc:Include_Customer_Activity_Detail>0</bsvc:Include_Customer_Activity_Detail> </bsvc:Response_Group> </bsvc:Get_Customers_Request> </soapenv:Body> </soapenv:Envelope> 但我使用下面的代码获取此 XML: <soapenv:Envelope xmlns:bsvc="urn:com.workday/bsvc" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <wsse:Security soapenv:mustUnderstand="1"> <wsse:UsernameToken Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"> <wsse:Username>TestUser02</wsse:Username> <wsse:Password>Password1</wsse:Password> </wsse:UsernameToken> </wsse:Security> <bsvc:Workday_Common_Header> <bsvc:Include_Reference_Descriptors_In_Response>1</bsvc:Include_Reference_Descriptors_In_Response> </bsvc:Workday_Common_Header> </soapenv:Header> <soapenv:Body> <bsvc:Get_Customers_Request version="v42.0"> <bsvc:Request_References> <bsvc:Customer_Reference Descriptor="?"> <bsvc:ID type="Customer_ID">100001</bsvc:ID> </bsvc:Customer_Reference> </bsvc:Request_References> <bsvc:Response_Group> <bsvc:Include_Reference>0</bsvc:Include_Reference> <bsvc:Include_Customer_Data>0</bsvc:Include_Customer_Data> <bsvc:Include_Customer_Balance>1</bsvc:Include_Customer_Balance> <bsvc:Include_Customer_Activity_Detail>0</bsvc:Include_Customer_Activity_Detail> </bsvc:Response_Group> </bsvc:Get_Customers_Request> </soapenv:Body> </soapenv:Envelope> 这是我的 C# 代码: using System; using System.Collections.Generic; using System.Xml.Serialization; namespace WorkDayAPI { [XmlRoot("Envelope", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")] public class Envelope { [XmlElement("Header")] public Header Header { get; set; } [XmlElement("Body")] public Body Body { get; set; } } public class Header { [XmlElement("Security", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")] public Security Security { get; set; } [XmlElement("Workday_Common_Header", Namespace = "urn:com.workday/bsvc")] public WorkdayCommonHeader WorkdayCommonHeader { get; set; } } public class Security { [XmlAttribute("mustUnderstand", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")] public string MustUnderstand { get; set; } [XmlElement("UsernameToken", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")] public UsernameToken UsernameToken { get; set; } } public class UsernameToken { [XmlElement("Username")] public string Username { get; set; } [XmlElement("Password", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")] public string Password { get; set; } [XmlAttribute("Type")] public string PasswordType { get; set; } } public class WorkdayCommonHeader { [XmlElement("Include_Reference_Descriptors_In_Response", Namespace = "urn:com.workday/bsvc")] public string IncludeReferenceDescriptorsInResponse { get; set; } } public class Body { [XmlElement("Get_Customers_Request", Namespace = "urn:com.workday/bsvc")] public GetCustomersRequest GetCustomersRequest { get; set; } } public class GetCustomersRequest { [XmlElement("Request_References", Namespace = "urn:com.workday/bsvc")] public RequestReferences RequestReferences { get; set; } [XmlAttribute("version", Namespace = "urn:com.workday/bsvc")] public string Version { get; set; } [XmlElement("Response_Group", Namespace = "urn:com.workday/bsvc")] public ResponseGroup ResponseGroup { get; set; } } public class RequestReferences { [XmlElement("Customer_Reference", Namespace = "urn:com.workday/bsvc")] public CustomerReference CustomerReference { get; set; } } public class CustomerReference { [XmlAttribute(AttributeName = "Descriptor", Namespace = "urn:com.workday/bsvc")] public string Descriptor { get; set; } [XmlElement(ElementName = "ID")] public CustomerData CustomerData { get; set; } } [XmlType(Namespace = "urn:com.workday/bsvc")] public class CustomerData { [XmlText] public string ID { get; set; } [XmlAttribute(AttributeName = "type", Namespace = "urn:com.workday/bsvc")] public string Type { get; set; } } public class ResponseGroup { [XmlElement("Include_Reference", Namespace = "urn:com.workday/bsvc")] public string IncludeReference { get; set; } [XmlElement("Include_Customer_Data", Namespace = "urn:com.workday/bsvc")] public string IncludeCustomerData { get; set; } [XmlElement("Include_Customer_Balance", Namespace = "urn:com.workday/bsvc")] public string IncludeCustomerBalance { get; set; } [XmlElement("Include_Customer_Activity_Detail", Namespace = "urn:com.workday/bsvc")] public string IncludeCustomerActivityDetail { get; set; } } } 这就是我设置命名空间和分配值的方式: using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; using WorkDayAPI.Input; namespace WorkDayAPI { class Program { static void Main(string[] args) { GenerateSoapXmlRequest(); } public static void GenerateSoapXmlRequest() { // Create the request object and populate it with values var soapRequest = new Envelope { Header = new Header { Security = new Security { MustUnderstand = "1", UsernameToken = new UsernameToken { Username = "TestUser02", Password = "Password1", PasswordType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText" } }, WorkdayCommonHeader = new WorkdayCommonHeader { IncludeReferenceDescriptorsInResponse = "1" } }, Body = new Body { GetCustomersRequest = new GetCustomersRequest { Version = "v42.0", RequestReferences = new RequestReferences { CustomerReference = new CustomerReference { Descriptor = "?", CustomerData = new CustomerData { Type = "Customer_ID", ID = "100001" } } }, ResponseGroup = new ResponseGroup { IncludeReference = "0", IncludeCustomerData = "0", IncludeCustomerBalance = "1", IncludeCustomerActivityDetail = "0" } } } }; // Prepare the namespaces with appropriate prefixes var namespaces = new XmlSerializerNamespaces(); namespaces.Add("soapenv", "http://schemas.xmlsoap.org/soap/envelope/"); namespaces.Add("bsvc", "urn:com.workday/bsvc"); namespaces.Add("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"); // Create an XmlSerializer instance for the Envelope class var serializer = new XmlSerializer(typeof(Envelope)); // Create a StringWriter to hold the serialized XML using (var stringWriter = new StringWriter()) { // Create an XmlWriterSettings object to control XML formatting var xmlSettings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true, OmitXmlDeclaration = true }; // Create an XmlWriter with the settings and namespaces using (var xmlWriter = XmlWriter.Create(stringWriter, xmlSettings)) { // Serialize the object to XML, passing the namespaces serializer.Serialize(xmlWriter, soapRequest, namespaces); } // Get the generated XML as a string string soapXml = stringWriter.ToString(); // Print the serialized XML to the console Console.WriteLine(soapXml); // Optionally, save the XML to a file File.WriteAllText("SoapRequest.xml", soapXml); } } } } 如何修复密码中的 Type 属性? 如何在Body属性中设置bsvc的Namespace? 以下是所需 XML 与生成 XML 之间的比较差异: ComparisonPic:[![enter image description here][1]][1] 第一个问题通过在密码类中将密码设置为XMLText并将PasswordType设置为XMLAttribute来解决,然后正确生成XML。仍然没有获得 BSVC 内部属性的命名空间: public class UsernameToken { [XmlElement("Username")] public string Username { get; set; } [XmlElement("Password")] public PasswordData Password { get; set; } } public class PasswordData { [XmlText] public string Password { get; set; } [XmlAttribute("Type")] public string PasswordType { get; set; } }

回答 1 投票 0

Jaxb - 我想要 'xs:nil' 但不想要 'xmlns:xsi'

MyClass.java @XmlElement(nillable=true, required=true) 公共字符串 myNillableThing; 实际产量 ... MyClass.java @XmlElement(nillable=true, required=true) public String myNillableThing; 实际产量 ... <myNillableThing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> ... 所需输出 ... <myNillableThing xs:nil="true"/> <-- note xs, not xsi --> ... 说实话,我不知道这些属性的含义是什么,但我正在尝试生成一个复制非常具体的示例的文件,这些是示例文件中显示的标签。 我相信,你所拥有的在语义上与你想要的相同。 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 将标记 xsi 定义为该 URL。您必须定义一些前缀。现在,您可能有一个文档,其中在结构的较高位置看到 xmlns:xs="http://www.w3.org/2001/XMLSchema-instance",然后在下面看到对 xs:nil 的引用。但必须有人定义前缀,默认没有提供前缀。 对于 XML 解析器来说,所有这些都只是围绕该对的语法: http://www.w3.org/2001/XMLSchema-instance, nil 前缀没有语义价值。如果您在没有真正的解析器的情况下解析 XML,并且只是逐字查找“xs:nil”,那么您可能会遇到各种问题。

回答 1 投票 0

使用 Postman 进行简单的 Twinfield API 请求

我想将销售发票与 javascript/google apps 脚本连接起来。因此我想用 Postman 测试一些东西。我知道,该 API 与 XML 一起使用,并且要获取数据,您需要使用 so c...

回答 2 投票 0

使用 Wp All Import / Wordpress 检测节点

我在导入时遇到问题。 我没有像value这样的产品类型 但我有一些节点: 价值...

回答 1 投票 0

如何使两个相关字段根据odoo 18中的状态具有不同的只读行为?

我有这些相关领域 qty_request = fields.Float('请求数量') Product_qty = fields.Float('产品数量', digits = '产品计量单位', ...

回答 1 投票 0

外部 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

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