0

こんにちは、XML ファイルにエクスポートされた UML クラス図があり、コードは基本的に繰り返し次のようになります。

<UML:Class name="Zip Code" isLeaf="false" xmi.id="{C7C65474-DD51-4165-89A0-FB552A929185}" isAbstract="false" visibility="public">

だから、私がする必要があるのは、ファイルで見つかったすべてのクラス(など)をユーザーに出力することです。より正確には、二重引用符内の名前を読み取る必要があります。

より適切には、特定のタグから二重引用符内の文字列を読み取ります。例:

すべてのクラス名を取得するには、次を検索する必要があります。<UML:Class name=" STRING WHAT I WANNA GET "

すべての属性名を取得するには、次を検索する必要があります。<UML:Attribute name=" STRING I WANNA GET "

編集:試してみましたが、まだ機能していません:x

私はこれを持っています。

example.php

<?php
$xmlstr = <<<XML
<UML:Class name="Colaborator" isLeaf="false" xmi.id="{B8D626AE-F100-4548-9136-057E68BE577D}" isAbstract="false" visibility="public">
                    <UML:Classifier.feature>
                        <UML:Attribute name="Colaborator Name" xmi.id="{BB9111A8-740A-4463-9DF8-719E21E3F1CC}" ownerScope="instance" visibility="private" changeability="changeable">
                            <UML:StructuralFeature.type>
                                <UML:Classifier xmi.idref="Dttp0"/>
                                <UML:lol> sfdsf </UML:lol>
                            </UML:StructuralFeature.type>
                        </UML:Attribute>
                        <UML:Attribute name="Colaborator Address" xmi.id="{D7C15DA3-F86B-4696-874C-C69F94CDEE51}" ownerScope="instance" visibility="private" changeability="changeable">
<UML:StructuralFeature.type>
                          <UML:Classifier xmi.idref="Dttp1"/>
                        </UML:StructuralFeature.type>
                        </UML:Attribute>
                    </UML:Classifier.feature>
                </UML:Class>

XML;
?>

そしてtest.phpで

<?php
include 'example.php';

$UML:Class = new SimpleXMLElement($xmlstr);

foreach ($UML:Class->xpath('//UML:Attribute') as $attr) {
echo $attr->name, PHP_EOL;
}
?>
4

1 に答える 1

0

名前(およびおそらくオフセット)だけが必要な場合:

regex: name="([\w ]+)"

それ以外の場合は、XML パーサーを使用する必要があります。

于 2012-06-21T14:25:46.033 に答える