0

如何在 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>

4

2 回答 2

0

您可以使用 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;
    }
于 2017-07-18T20:31:49.433 回答
0

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

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

于 2016-07-29T13:01:02.713 回答