使用Asp.net C#读取XMI文件,并在树视图中显示

本文关键字:视图 显示 文件 net Asp 读取 XMI 使用 | 更新日期: 2023-09-27 17:58:51

如何在asp.net C#中读取XMI文件并在树视图中显示。XMI与XML有不同的格式,我想在asp.net C#中读取以下格式的XMI文件数据。XMI格式如下。有人能建议我如何阅读这种格式,并将这种XMI转换为C#中的树格式吗

<?xml version="1.0" encoding="UTF-8"?>

    <xmi:Extension extender="Visual Paradigm">
        <nickname exportedFromDifferentName="false"/>
    </xmi:Extension>
</xmi:Documentation>
<xmi:Extension extender="Visual Paradigm">
    <projectProperties>
        <projectProperty name="author" value="Dell"/>
        <projectProperty name="description" value="test"/>
    </projectProperties>
    <ProjectOptions>
        <IDPositionRotation>
            <Positions>
                <Position id="BPTask" value="'u0004"/>
                <Position id="BPSubProcess" value="'u0004"/>
            </Positions>
            <Positions>
                <Rotation id="BPTask" value="'u0000"/>
                <Rotation id="BPSubProcess" value="'u0000"/>

            </Positions>
        </IDPositionRotation>
        <LanguageDataType>
            <LanguageDataTypeModel id="Java" name="Java">
                <DataType>boolean</DataType>
                <DataType>byte</DataType>
            </LanguageDataTypeModel>

            <LanguageDataTypeModel id="UML" name="UML">
                <DataType>boolean</DataType>
                <DataType>byte</DataType>

            </LanguageDataTypeModel>
        </LanguageDataType>
        <GeneralOptions confirmSubLevelIdWithDot="true"/>
        <ModelQualityOptions enableModelQualityChecking="false"/>
        <OfficeExchangeOptions generateBlankModel="false" generateTableOfContent="true" insertPageBreak="true"/>
        <ORMOptions decimalPrecision="19" decimalScale="0" exportCommentToDatabase="true" formattedSQL="false" generateAssociationWithAttribute="false" generateDiagramFromORMWizards="true" getterSetterVisibility="'u0000" idGeneratorType="native" mappingFileColumnOrder="'u0000" numericToClassType="'u0000" quoteSQLIdentifier="'u0000" recreateShapeWhenSync="false" syncToClassDiagramAttributeName="'u0001" syncToClassDiagramAttributeNamePrefix="" syncToClassDiagramAttributeNameSuffix="" syncToClassDiagramClassName="'u0000" syncToClassDiagramClassNamePrefix="" syncToClassDiagramClassNameSuffix="" syncToERDColumnName="'u0000" syncToERDColumnNamePrefix="" syncToERDColumnNameSuffix="" syncToERDTableName="'u0004" syncToERDTableNamePrefix="" syncToERDTableNameSuffix="" synchronizeDefaultValueToColumn="false" synchronizeName="'u0002" tablePerSubclassFKMapping="'u0000" upperCaseSQL="true" useDefaultDecimal="true" wrappingServletRequest="'u0001"/>
        <RequirementDiagramOptions defaultWrapMember="false" showAttributes="'u0001" supportHTMLAttribute="false"/>
        <StateCodeEngineOptions autoCreateInitialStateInStateDiagram="true" autoCreateTransitionMethods="true" defaultInitialStateLocationX="-1" defaultInitialStateLocationY="-1" generateDebugMessage="false" generateSample="true" generateTryCatch="true" language="'u0000" regenerateTransitionMethods="false" syncTransitionMethods="true"/>
        <WarningOptions createORMClassInDefaultPackage="true"/>
        <PORepository>
            <POUserIDFormats>
                <POUserIDFormat digits="2" guid="false" id="s_eav6qAUEBg4gV9" lastNumericValue="0" modelType="BPMNElement" prefix="BP" suffix=""/>
                <POUserIDFormat digits="2" guid="false" id="s_eav6qAUEBg4gV." lastNumericValue="0" modelType="Actor" prefix="AC" suffix=""/>
            </POUserIDFormats>
        </PORepository>
    </ProjectOptions>
</xmi:Extension>
<uml:Model name="Online Bookshop" xmi:id="ineav6qAUEBg4gOG">
    <xmi:Extension extender="Visual Paradigm">
        <vpumlChildModels>
            <vpumlModel id="mneav6qAUEBg4gOR" modelType="WSDLContainer">
                <properties>
                    <property name="name" type="string" value="WSDLContainer"/>
                    <property name="modelType" type="string" value="WSDLContainer"/>
                </properties>
                <vpumlChildModelRefs>
                    <modelRef value="uneav6qAUEBg4gOS"/>
                </vpumlChildModelRefs>
            </vpumlModel>

            <vpumlModel id="jneav6qAUEBg4gPL" modelType="PMPriorityContainer">
                <properties>
                    <property name="name" type="string" value=""/>
                    <property name="modelType" type="string" value="PMPriorityContainer"/>
                </properties>
                <vpumlChildModelRefs>
                    <modelRef value="jneav6qAUEBg4gPM"/>
                    <modelRef value="jneav6qAUEBg4gPN"/>
                    <modelRef value="jneav6qAUEBg4gPO"/>
                </vpumlChildModelRefs>
                <vpumlChildModels>
                    <vpumlModel id="jneav6qAUEBg4gPM" modelType="PMPriority">
                        <properties>
                            <property name="name" type="string" value="Low"/>
                            <property name="modelType" type="string" value="PMPriority"/>
                        </properties>
                    </vpumlModel>
                    <vpumlModel id="jneav6qAUEBg4gPN" modelType="PMPriority">
                        <properties>
                            <property name="name" type="string" value="Medium"/>
                            <property name="modelType" type="string" value="PMPriority"/>
                        </properties>
                    </vpumlModel>
                    <vpumlModel id="jneav6qAUEBg4gPO" modelType="PMPriority">
                        <properties>
                            <property name="name" type="string" value="High"/>
                            <property name="modelType" type="string" value="PMPriority"/>
                        </properties>
                    </vpumlModel>
                </vpumlChildModels>
            </vpumlModel>

        </vpumlChildModels>
    </xmi:Extension>
    <ownedMember name="UseCase" xmi:id="UseCase_UseCase_id" xmi:type="uml:Stereotype">
        <xmi:Extension extender="Visual Paradigm">
            <baseType value="UseCase"/>
            <taggedValueDefinitions>
                <taggedValueDefinition htmlValue="" id="hveav6qAUEBg4gVn" name="Level" type="2" value="">
                    <value value="Summary"/>
                    <value value="User"/>
                    <value value="Subfunction"/>
                </taggedValueDefinition>
                <taggedValueDefinition htmlValue="" id="pveav6qAUEBg4gVr" name="Preconditions" type="4" value=""/>
                <taggedValueDefinition htmlValue="" id="pveav6qAUEBg4gVs" name="Post-conditions" type="4" value=""/>
            </taggedValueDefinitions>
            <qualityScore value="-1"/>
        </xmi:Extension>
    </ownedMember>
    <ownedMember name="Case Story" xmi:id="UseCase_Case Story_id" xmi:type="uml:Stereotype">
        <xmi:Extension extender="Visual Paradigm">
            <baseType value="UseCase"/>
            <qualityScore value="-1"/>
        </xmi:Extension>
    </ownedMember>
    <ownedMember name="requirement" xmi:id="Requirement_requirement_id" xmi:type="uml:Stereotype">
        <xmi:Extension extender="Visual Paradigm">
            <baseType value="Requirement"/>
            <taggedValueDefinitions>
                <taggedValueDefinition htmlValue="" id="tfeav6qAUEBg4gV4" name="kind" type="2" value="">
                    <value value="Functional"/>
                    <value value="Performance"/>
                    <value value="Interface"/>
                </taggedValueDefinition>
            </taggedValueDefinitions>
            <qualityScore value="-1"/>
        </xmi:Extension>
    </ownedMember>
    <ownedMember xmi:type="uml:Collaboration">
        <xmi:Extension extender="Visual Paradigm">
            <dummyModel value="true"/>
        </xmi:Extension>
        <ownedBehavior name="Communication Diagram" xmi:id="..HGv6qAUEBg4gWI" xmi:type="uml:Interaction">
            <lifeline name="online book shop" represents="ydguv6qAUEBg4gcZ_represents" xmi:id="ydguv6qAUEBg4gcZ" xmi:type="uml:Lifeline">
                <lowerValue value="1" xmi:id="ydguv6qAUEBg4gcZ_multiplicity_lowerValue" xmi:type="uml:LiteralString"/>
                <upperValue value="*" xmi:id="ydguv6qAUEBg4gcZ_multiplicity_upperValue" xmi:type="uml:LiteralString"/>
                <xmi:Extension extender="Visual Paradigm">
                    <active xmi:value="false"/>
                    <stopped xmi:value="false"/>
                    <multiObject xmi:value="false"/>
                    <lifeline/>
                    <qualityScore value="-1"/>
                </xmi:Extension>
                <coveredBy xmi:idref="auR_gGqAUEBg4gnk"/>
                <coveredBy xmi:idref="2E9_gGqAUEBg4gn6"/>
            </lifeline>
            <ownedConnector xmi:id="D_Fo_6qAUEBg4gk1" xmi:type="uml:Connector">
                <end role="ydguv6qAUEBg4gcZ" xmi:id="D_Fo_6qAUEBg4gk2" xmi:type="uml:ConnectorEnd">
                    <xmi:Extension extender="Visual Paradigm">
                        <modelType value="InteractionLifeLineLinkEnd"/>
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </end>

            </ownedConnector>
            <ownedConnector xmi:id="Qa6Y_6qAUEBg4gmC" xmi:type="uml:Connector">
                <end role="ydguv6qAUEBg4gcZ" xmi:id="Qa6Y_6qAUEBg4gmD" xmi:type="uml:ConnectorEnd">
                    <xmi:Extension extender="Visual Paradigm">
                        <modelType value="InteractionLifeLineLinkEnd"/>
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </end>

                <ownedRule constrainedElement="n0XgQGqAUEBg4gsC" name="Order_complete" xmi:id="M792QGqAUEBg4gyr">
                    <specification body="self.order&gt;0" xmi:type="uml:OpaqueExpression"/>
                    <xmi:Extension extender="Visual Paradigm">
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </ownedRule>
            </ownedConnector>
            <ownedConnector xmi:id="3CmY_6qAUEBg4gmI" xmi:type="uml:Connector">
                <end role="ydguv6qAUEBg4gcZ" xmi:id="3CmY_6qAUEBg4gmJ" xmi:type="uml:ConnectorEnd">
                    <xmi:Extension extender="Visual Paradigm">
                        <modelType value="InteractionLifeLineLinkEnd"/>
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </end>
                <xmi:Extension extender="Visual Paradigm">
                    <modelType value="InteractionLifeLineLink"/>
                    <qualityScore value="-1"/>
                </xmi:Extension>
            </ownedConnector>
            <fragment covered="ydguv6qAUEBg4gcZ" message="auR_gGqAUEBg4gnj" xmi:id="auR_gGqAUEBg4gnk" xmi:type="uml:EventOccurrence">
                <xmi:Extension extender="Visual Paradigm">
                    <qualityScore value="-1"/>
                </xmi:Extension>
            </fragment>
            <fragment covered="GypQ_6qAUEBg4ggf" message="2E9_gGqAUEBg4gn5" xmi:id="2E9_gGqAUEBg4gn7" xmi:type="uml:EventOccurrence">
                <xmi:Extension extender="Visual Paradigm">
                    <qualityScore value="-1"/>
                </xmi:Extension>
            </fragment>
            <ownedConnector xmi:id="EzegQGqAUEBg4grB" xmi:type="uml:Connector">
                <end role="ydguv6qAUEBg4gcZ" xmi:id="EzegQGqAUEBg4grC" xmi:type="uml:ConnectorEnd">
                    <xmi:Extension extender="Visual Paradigm">
                        <modelType value="InteractionLifeLineLinkEnd"/>
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </end>
            </ownedConnector>

            <message connector="6jguv6qAUEBg4gce" name="find_books()" receiveEvent="wLguv6qAUEBg4gcn" sendEvent="wLguv6qAUEBg4gcm" xmi:id="wLguv6qAUEBg4gcl" xmi:type="uml:Message">
                <signature xmi:id="wLguv6qAUEBg4gcl_type" xmi:type="uml:Action"/>
                <xmi:Extension extender="Visual Paradigm">
                    <returnValue name="" xmi:id="jtfQQGqAUEBg4gtR" xmi:type="uml:ReplyAction">
                        <xmi:Extension extender="Visual Paradigm">
                            <iteration xmi:value="false"/>
                            <asynshronous xmi:value="false"/>
                            <qualityScore value="-1"/>
                        </xmi:Extension>
                    </returnValue>
                    <number xmi:value="1"/>
                    <asynshronous xmi:value="false"/>
                    <qualityScore value="-1"/>
                </xmi:Extension>
            </message>
            <ownedAttribute name="online book shop" xmi:id="ydguv6qAUEBg4gcZ_represents"/>
            <lifeline name="inventory" represents="mdyff6qAUEBg4ggL_represents" xmi:id="mdyff6qAUEBg4ggL" xmi:type="uml:Lifeline">
                <xmi:Extension extender="Visual Paradigm">
                    <active xmi:value="false"/>
                    <stopped xmi:value="false"/>
                    <multiObject xmi:value="false"/>
                    <lifeline/>
                    <qualityScore value="-1"/>
                </xmi:Extension>
                <coveredBy xmi:idref="n0XgQGqAUEBg4gsE"/>
            </lifeline>
            <ownedAttribute name="inventory" xmi:id="mdyff6qAUEBg4ggL_represents"/>
            <lifeline name=" Book_price" represents="WeRQ_6qAUEBg4ggW_represents" xmi:id="WeRQ_6qAUEBg4ggW" xmi:type="uml:Lifeline">
                <xmi:Extension extender="Visual Paradigm">
                    <active xmi:value="false"/>
                    <stopped xmi:value="false"/>
                    <multiObject xmi:value="false"/>
                    <lifeline/>
                    <qualityScore value="-1"/>
                </xmi:Extension>
                <coveredBy xmi:idref="auR_gGqAUEBg4gnl"/>
            </lifeline>
            <ownedAttribute name=" Book_price" xmi:id="WeRQ_6qAUEBg4ggW_represents"/>
            <ownedConnector xmi:id="5FbGQGqAUEBg4gw." xmi:type="uml:Connector">
                <end role="3cGo_6qAUEBg4gkc" xmi:id="5FbGQGqAUEBg4gw_" xmi:type="uml:ConnectorEnd">
                    <xmi:Extension extender="Visual Paradigm">
                        <modelType value="InteractionLifeLineLinkEnd"/>
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </end>
                <end role="Z2TGQGqAUEBg4gw5" xmi:id="5FbGQGqAUEBg4gxA" xmi:type="uml:ConnectorEnd">
                    <xmi:Extension extender="Visual Paradigm">
                        <modelType value="InteractionLifeLineLinkEnd"/>
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </end>
                <xmi:Extension extender="Visual Paradigm">
                    <modelType value="InteractionLifeLineLink"/>
                    <qualityScore value="-1"/>
                </xmi:Extension>
                <ownedRule constrainedElement="2SnGQGqAUEBg4gxK" name="Gift" xmi:id="1Cq2QGqAUEBg4gyh">
                    <specification body="(r&gt;10) ^ (x*r=&lt;200)" xmi:type="uml:OpaqueExpression"/>
                    <xmi:Extension extender="Visual Paradigm">
                        <qualityScore value="-1"/>
                    </xmi:Extension>
                </ownedRule>
            </ownedConnector>
            <ownedAttribute name="Actor" xmi:id="nEWmv6qAUEBg4gWa_represents"/>
            <xmi:Extension extender="Visual Paradigm">
                <qualityScore value="-1"/>
            </xmi:Extension>
        </ownedBehavior>
    </ownedMember>
    <ownedMember name="entity" xmi:id="InteractionLifeLine_entity_id" xmi:type="uml:Stereotype">
        <xmi:Extension extender="Visual Paradigm">
            <baseType value="InteractionLifeLine"/>
            <qualityScore value="-1"/>
        </xmi:Extension>
    </ownedMember>
    <ownedMember name="boundary" xmi:id="InteractionLifeLine_boundary_id" xmi:type="uml:Stereotype">
        <xmi:Extension extender="Visual Paradigm">
            <baseType value="InteractionLifeLine"/>
            <qualityScore value="-1"/>
        </xmi:Extension>
    </ownedMember>
</uml:Model>

使用Asp.net C#读取XMI文件,并在树视图中显示

哦,我终于找到了这个解决方案,如果你想阅读XMI 1.0和1.2版本的文件,你可以从下面下载代码,并可以生成XMI模型的层次视图和代码。

使用C#读取XMI并生成XMI模型的层次结构和代码

您可以使用XDocument读取C#中的xml文件,然后将其存储到自定义类中。

现在您可以灵活地通过迭代将其保存到数据库中

  public CatSubCatList GenerateCategoryListFromProductFeedXML()
    {
        string path = System.Web.HttpContext.Current.Server.MapPath(_xmlFilePath);
        XDocument xDoc = XDocument.Load(path);
        XElement xElement = XElement.Parse(xDoc.ToString());

        List<Category> lstCategory = xElement.Elements("Product").Select(d => new Category
        {
            Code = Convert.ToString(d.Element("CategoryCode").Value),
            CategoryPath = d.Element("CategoryPath").Value,
            Name = GetCateOrSubCategory(d.Element("CategoryPath").Value, 0), // Category
            SubCategoryName = GetCateOrSubCategory(d.Element("CategoryPath").Value, 1) // Sub Category
        }).GroupBy(x => new { x.Code, x.SubCategoryName }).Select(x => x.First()).ToList();
        CatSubCatList catSubCatList = GetFinalCategoryListFromXML(lstCategory);
        return catSubCatList;
    }