0

エンティティが「作成」操作をサポートしているかどうかを確認する xpath 式を作成しようとしています。これは私が使用しているコードです:

この場合、文字列行には「TciProfile」のようにアンダースコアのないエンティティ名が含まれます。

 while ((line = br.readLine()) != null) {
        System.out.println("entity name: "+line);
        XPathFactory factory = XPathFactory.newInstance();
        XPath xpath1 = factory.newXPath();

         XPathExpression expr = xpath1.compile("//Entity[matches(Name,'" +line+ "') and .//Operation/Name='create']");

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList res = (NodeList) result;
        System.out.println("NodeList size: " + res.getLength());

この場合の変数 line は になりますTciProfile

しかし、この式はnull評価時に値を再実行します。

誰かが私がここで間違っていることを教えてもらえますか??

<Entity>
<Name>TCI_Profile|TciProfile</Name>
<AttributeList>
    <Attribute>
        <Name>Tci_Profile_Id|tciProfileId</Name>
        <Type>string|string</Type>
        <Range>0-23</Range>
        <Default>null</Default>
    </Attribute>
    <Attribute>
        <Name>Description|description</Name>
        <Type>string|string</Type>
        <Range>0-199</Range>
        <Default>null</Default>
    </Attribute>
</AttributeList>
<KeyAttributeNameList>
    <Name>Tci_Profile_Id|tciProfileId</Name>
</KeyAttributeNameList>
<OperationList>
    <Operation>
        <Name>show|retrieve</Name>
        <RequestAttributeList>
            <RequestAttribute>
                <Name>Tci_Profile_Id|tciProfileId</Name>
                <Flag>required</Flag>
            </RequestAttribute>
        </RequestAttributeList>
        <ResponseAttributeNameList>
            <Name>Tci_Profile_Id|tciProfileId</Name>
            <Name>Description|description</Name>
        </ResponseAttributeNameList>
    </Operation>
    <Operation>
        <Name>create</Name>
        <RequestAttributeList>
            <RequestAttribute>
                <Name>Tci_Profile_Id|tciProfileId</Name>
                <Flag>required</Flag>
            </RequestAttribute>
            <RequestAttribute>
                <Name>Description|description</Name>
                <Flag>required</Flag>
            </RequestAttribute>
        </RequestAttributeList>
        <ResponseAttributeNameList>
        </ResponseAttributeNameList>
    </Operation>
    <Operation>
        <Name>find|getNextItems</Name>
        <RequestAttributeList>
            <RequestAttribute>
                <Name>Tci_Profile_Id|tciProfileId</Name>
                <Flag>optional/searchable</Flag>
            </RequestAttribute>
        </RequestAttributeList>
        <ResponseAttributeNameList>
            <Name>Tci_Profile_Id|tciProfileId</Name>
        </ResponseAttributeNameList>
    </Operation>
    <Operation>
        <Name>delete</Name>
        <RequestAttributeList>
            <RequestAttribute>
                <Name>Tci_Profile_Id|tciProfileId</Name>
                <Flag>required</Flag>
            </RequestAttribute>
        </RequestAttributeList>
        <ResponseAttributeNameList>
        </ResponseAttributeNameList>
    </Operation>
    <Operation>
        <Name>put</Name>
        <RequestAttributeList>
            <RequestAttribute>
                <Name>Tci_Profile_Id|tciProfileId</Name>
                <Flag>required</Flag>
            </RequestAttribute>
            <RequestAttribute>
                <Name>Description|description</Name>
                <Flag>required</Flag>
            </RequestAttribute>
        </RequestAttributeList>
        <ResponseAttributeNameList>
        </ResponseAttributeNameList>
    </Operation>
    <Operation>
        <Name>update</Name>
        <RequestAttributeList>
            <RequestAttribute>
                <Name>Tci_Profile_Id|tciProfileId</Name>
                <Flag>required</Flag>
            </RequestAttribute>
            <RequestAttribute>
                <Name>Description|description</Name>
                <Flag>required</Flag>
            </RequestAttribute>
        </RequestAttributeList>
        <ResponseAttributeNameList>
        </ResponseAttributeNameList>
    </Operation>
</OperationList>

4

1 に答える 1

0

あなたが望むのは

//Entity[matches(Name,'TciProfile') and .//Operation/Name='create']

Oxygen/XML でテストされ、両方の条件を満たすエンティティ ノードを返します。

于 2013-01-23T06:48:50.763 に答える