0

ユーザー入力から 2 つの文字列を取得しました。そのうちの 1 つを行 ID と一致させる必要があります。

文字列を整数に解析する必要があるかどうか (おそらく、すべての XML データを文字列に解析してからそのデータを検索する必要があるかどうか)、または文字列を使用して XML データを直接検索できるかどうかはわかりません。おそらくどちらでもない。

XML ファイルに格納する内容の例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <language>
        <row id="7101">
            <language-from>English</language-from>
            <language-to>Thai</language-to>
            <cost>30.00</cost>
            <comment><![CDATA[out source]]></comment>
        </row>
    </language>
</data>
4

2 に答える 2

1

XML ドキュメントを見て、XML ドキュメントを一連の構造化オブジェクトに解析し、簡単に検索できるようにそれらをマップに格納することをお勧めします。キーは、ユーザーの入力に基づく検索条件です。XML ファイルが頻繁に変更されない限り、ドキュメントを 1 回解析するだけでも、文字列ベースの検索よりも価値があります。

その情報を保持するクラスを次のように定義します。

class TranslationCost
{
    private int id;
    private String sourceLang;
    private String targetLang;
    private float cost;
    private String comment;
}

Map<Integer, TranslationCost> idTocostMap;

public float calculateCost(int id, int countOfWords)
{
    TranslationCost costObj = idToCostMap.get(id);
    if (null == costObj) {
        // throw exception
    }
    return costObj.getCost() * countOfWords;
}

そんな感じ...

于 2012-08-23T02:57:24.840 に答える
1

クエリを使用してノードを検索できxPathます...

Document xmlDoc = // Load the XML into an DOM document
Node root = xmlDoc.getDocumentElement();

XPathFactory xFactory = XPathFactory.newInstance();
XPath xPath = getXPathFactory().newXPath();
XPathExpression xExpress = getXPath().compile("/data/language/row[language-from='English']");
NodeList nodeList = (NodeList)xExpress.evaluate(root, XPathConstants.NODESET);

個人的には、呼び出しを簡単にするために、コンセプトに基づいてより単純なモデルを構築したいと思いますが、コンセプトは同じです

于 2012-08-23T03:08:50.647 に答える