gpt4 book ai didi

c# - XSD.exe 缺少嵌套属性

转载 作者:行者123 更新时间:2023-11-30 22:29:38 26 4
gpt4 key购买 nike

我这里有一个扁平化的 XSD: http://pastebin.com/tQVSH9Jp

我有一个“替代”XSLT 脚本,我正在针对它运行以针对 XSD.exe(忽略引用的元素)修复它,但是生成的 XSD 缺少一些属性。 (ID 不在 UniqueID_Type 中)。

任何人都可以提供一个 XSLT 脚本来正确执行这些替换,或者甚至完全提供另一种解决方案吗?

最佳答案

有趣的是,有人建议编写您自己的 xsd.exe,并依赖 XmlSchemaImporter...首先,我认为这不是一项微不足道的任务;其次,缺少属性的问题来自XmlSchemaImporter ; ImportAttributeGroupMembers 中有一个错误:它不是在寻找 XmlSchemaAttributeGroupRef,而是在检查 XmlSchemaAttributeGroup(下面由 Reflector 提供摘录):

private void ImportAttributeGroupMembers(XmlSchemaAttributeGroup group, string identifier, CodeIdentifiers members, CodeIdentifiers membersScope, string ns)
{
for (int i = 0; i < group.Attributes.Count; i++)
{
object obj2 = group.Attributes[i];
if (obj2 is XmlSchemaAttributeGroup)
{
...
}
else if (obj2 is XmlSchemaAttribute)
{
...
}
}
...
}

有一个类似的实用程序,xsd2code在进入 XML 架构重构 (XSR) 之前,我会尝试使用原始 XSD。

如果你想走这条路,我推荐QTAssistant对于 XSR(我与之相关)。我已经用最新版本 (4.0.21) 试用了您的 XSD,它成功了。我已经发布了结果 here .

使用 XSD.exe 为您指出有缺陷的片段生成的代码(我只是显示字段)现在显示 ID 属性的 idField:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.opentravel.org/OTA/2003/05")]
public partial class UniqueID_Type {

private CompanyNameType companyNameField;

private string uRLField;

private string typeField;

private string instanceField;

private string idField;

private string iD_ContextField;

...
}

特定于您的设置的是必须设置为 true 的 InlineAttributeGroups:

QTAssistant setting InlineAttributeGroups

如果您对使用 QTAssistant 进行重构的更多详细信息感兴趣,请查看 this post ,也在 SO 上。无论如何,我已经发布了整个重构模式,请随意使用它......

关于c# - XSD.exe 缺少嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com