1

このXMLファイルから要素「UML:UseCase」の属性「name」を取得したいです。

<?xml version = "1.0" encoding = "UTF-8"?>
<XMI xmi.version = "1.1" xmlns:UML="href://org.omg/UML/1.3" timestamp = "Fri Nov 16 11:47:6 2012">
<XMI.header>
  <XMI.documentation>
    <XMI.owner></XMI.owner>
    <XMI.contact></XMI.contact>
    <XMI.exporter>StarUML.XMI-Addin</XMI.exporter>
    <XMI.exporterVersion>1.0</XMI.exporterVersion>
    <XMI.notice></XMI.notice>
  </XMI.documentation>
  <XMI.metamodel xmi.name = "UML" xmi.version = "1.3"/>
 </XMI.header>
<XMI.content>
<UML:Model xmi.id="UMLProject.1">
  <UML:Namespace.ownedElement>
    <UML:Model xmi.id="UMLModel.2" name="Use Case Model" visibility="public" isSpecification="false" namespace="UMLProject.1" isRoot="false" isLeaf="false" isAbstract="false">
      <UML:Namespace.ownedElement>
        <UML:Package xmi.id="UMLPackage.3" name="Purchasing" visibility="public" isSpecification="false" namespace="UMLModel.2" isRoot="false" isLeaf="false" isAbstract="false">
          <UML:Namespace.ownedElement>
            <UML:UseCase xmi.id="UMLUseCase.4" name="Place order" visibility="public" isSpecification="false" namespace="UMLPackage.3" isRoot="false" isLeaf="false" isAbstract="false" participant="UMLAssociationEnd.40" extend2="UMLExtend.47 UMLExtend.48" include="UMLInclude.25 UMLInclude.44 UMLInclude.45"/>
            <UML:UseCase xmi.id="UMLUseCase.5" name="Place order via Web site" visibility="public" isSpecification="false" namespace="UMLPackage.3" isRoot="false" isLeaf="false" isAbstract="false" extend="UMLExtend.48"/>
            <UML:UseCase xmi.id="UMLUseCase.6" name="Place order via Application" visibility="public" isSpecification="false" namespace="UMLPackage.3" isRoot="false" isLeaf="false" isAbstract="false" extend="UMLExtend.47"/>
            <UML:UseCase xmi.id="UMLUseCase.7" name="Browse catalog" visibility="public" isSpecification="false" namespace="UMLPackage.3" isRoot="false" isLeaf="false" isAbstract="false" participant="UMLAssociationEnd.43"/>
            <UML:UseCase xmi.id="UMLUseCase.8" name="Confirm shipment" visibility="public" isSpecification="false" namespace="UMLPackage.3" isRoot="false" isLeaf="false" isAbstract="false"/>
            <UML:Actor xmi.id="UMLActor.9" name="Customer" visibility="public" isSpecification="false" namespace="UMLPackage.3" isRoot="false" isLeaf="false" isAbstract="false" participant="UMLAssociationEnd.39 UMLAssociationEnd.42"/>
            <UML:Stereotype xmi.id="X.55" name="Common feature" extendedElement="UMLPackage.3"/>
            <UML:Stereotype xmi.id="X.56" name="Common use case" extendedElement="UMLUseCase.4 UMLUseCase.7 UMLUseCase.8"/>
            <UML:Stereotype xmi.id="X.57" name="Alternative use case" extendedElement="UMLUseCase.5 UMLUseCase.6"/>
          </UML:Namespace.ownedElement>
        </UML:Package>
......

私の期待される結果。

注文
する Web サイトから
注文する アプリケーションから注文する
カタログを閲覧する
出荷を確認する

ありがとうございました

4

1 に答える 1

0

あなたのためにプログラムを書くのは大変です...しかし、あなたは名前空間を使用してXPathを調査したいと思うでしょう:

XPathFactory.compile("//UML:UseCase/@name", Filters.attribute(), null,
         Namespace.getNamespace("UML", "href://org.omg/UML/1.3"));

または名前空間で直接ナビゲートする:

Parent.getChildren(name, Namespace).

あなたの問題は、名前空間 Namespace.getNamespace("UML", "href://org.omg/UML/1.3"); ですべての UML プレフィックス付きコンテンツにアクセスする必要があることです。

ロルフ

于 2012-11-18T14:08:20.957 に答える