使用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>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>10) ^ (x*r=<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>
哦,我终于找到了这个解决方案,如果你想阅读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;
}