【问题标题】:validating xml data in java在java中验证xml数据
【发布时间】:2013-09-15 05:39:57
【问题描述】:

我的交易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 是否是数字。请提供建议

【问题讨论】:

  • 这已经在其他帖子中得到回答 - stackoverflow.com/questions/5439529/…
  • 正则表达式允许您将词汇表示与数字格式进行匹配。另一种方法可能是使用 java 类将数据转换为数字,并使用专门的异常处理程序捕获错误。最后同样重要的是,您可以在 xml 级别使用模式验证(= 类型检查)。周围有很多工具,支持 xml 存储的数据库也可能提供此功能(例如,oracle 提供)。

标签: java xml


【解决方案1】:

如果您将 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 的值设置在注释中提到的最小值和最大值之间。

【讨论】:

    【解决方案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针对xsd的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2010-11-22
      • 2015-11-06
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      相关资源
      最近更新 更多