0

我的交易 xml 如下所示

<?xml version= "1.0"?>
<transactionlist>
<transaction action="c">
    <transactionid>t004</transactionid>
    <transactiondate>11/06/2013</transactiondate>
    <merchantdetails>Sony wholesale Dealer</merchantdetails>
    <itempurchased>3</itempurchased>
    <amount>40399</amount>
    <description>sony laptops</description>
</transaction>
<transaction action="d">
    <transactionid>t003</transactionid>
</transaction>
<transaction action="u">
    <transactionid>T001</transactionid>
    <transactiondate>20/08/2013</transactiondate>
    <merchantdetails>samsung Axses</merchantdetails>
    <itempurchased>1</itempurchased>
    <amount>40000</amount>
    <description>samsung smart phone</description>
</transaction>
</transactionlist>

我已经解析了上面 xml 中购买的元素 item,并将其存储在整数变量中。如何验证仅针对数字购买的商品。那就是我想检查 itempurchased 是否是数字。请提供建议

4

2 回答 2

2

最好的方法应该是针对 xsd 验证 xml,其中 itempurchased 的类型为 xsd:int

xsd下面

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="transactionlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="transaction">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="transactionid" type="xs:string" />
              <xs:element minOccurs="0" name="transactiondate" type="xs:string" />
              <xs:element minOccurs="0" name="merchantdetails" type="xs:string" />
              <xs:element minOccurs="0" name="itempurchased" type="xs:int" />
              <xs:element minOccurs="0" name="amount" type="xs:int" />
              <xs:element minOccurs="0" name="description" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="action" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

这里Validating XML against XSD验证 xml against xsd 的代码

于 2013-09-11T09:17:14.013 回答
0

如果您将 xml 编组为 java bean,那么您可以尝试使用 Java6 Bean Validation Framework。在此处阅读更多信息:

http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

就像在 bean 上添加注释一样简单:

public class MyXMLBean {
    @Max(10)
    @Min(5) 
    private int itempurchased;
}

上面的 bean 将允许在注释中提到的最小值和最大值之间设置 itempurchased 的值。

于 2013-09-11T09:16:41.950 回答