0

我想@name从给定的表中找到标签col_alt。任何人都可以帮我解决这个问题。有可能javax.XML.Xpath吗?如果没有,你能建议另一种方法来找到它。

这是 XML 数据的示例:

<?xml version="1.0" encoding="UTF-8"?>
<mapping>
    <table name="CLIENT">
        <table_column>
            <column name="CLIENT_NAME">
                <col_alt>CLIENT_NAME</col_alt>
                <col_alt>CLIENT NAME</col_alt>
                <col_alt>NAME</col_alt>
                <col_alt>NAMES</col_alt>
                <col_alt>CUST NAME</col_alt>
                <col_alt>CUSTOMER NAME</col_alt>
            </column>
            <column name="CLIENT_ADDRESS">
                <col_alt>ADDRESS</col_alt>
                <col_alt>LIVES IN</col_alt>
                <col_alt>LOCATION</col_alt>
                <col_alt>STAY</col_alt>
            </column>
            <column name="CLIENT_CONTACT_NO">
                <col_alt>CONTACT NO</col_alt>
                <col_alt>CONTACT</col_alt>
            </column>
        </table_column>
    </table>
    <table name="SALES_MASTER">
        <table_column>
            <column name="SALE_DATE">
                <col_alt>SALE DATE</col_alt>
                <col_alt>BILL DATE</col_alt>
                <col_alt>SALES DATE</col_alt>
            </column>
            <column name="TOTAL_BILL">
                <col_alt>TOTAL BILL</col_alt>
                <col_alt>GRAND TOTAL</col_alt>
            </column>
        </table_column>
    </table>
</mapping>
4

2 回答 2

0

如果我没记错的话,这样的 Xpath 表达式应该适合你。我没有完整的代码来试一试。

XPathExpression expr = xpath.compile("//table/table_column/column[col_alt='SALE DATE']/@name");
Object result = expr.evaluate(doc, XPathConstants.NODESET);

NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getNodeValue());
}

doc - 是 xml 的文档引用。

于 2013-04-04T07:59:39.180 回答
0

你有 XML 的模式吗?如果是这样,您可以检查 JAXB

于 2013-04-04T08:02:10.770 回答