【问题标题】:Dom parser to parse xml [closed]用于解析 xml 的 Dom 解析器 [关闭]
【发布时间】:2012-02-28 17:33:36
【问题描述】:

使用 DOM 解析 xml 时遇到问题,使用 http://www.developerfusion.com/code/2064/a-simple-way-to-read-an-xml-file-in-java/ 中定义的方法

<?xml version="1.0" encoding="UTF-8"?>
<apis xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
    <api name="getFormFields" requesttype ="GET">
         <url>/fieldtype/</url>       
         <parameters>
             <parameter><![CDATA[fieldtype=textbox&fieldId=8668376496495]]></parameter>

          </parameters>
 </api>

【问题讨论】:

  • 还添加您遇到的任何异常...
  • @vishalrmakwana 您还应该提及错误消息。
  • 发布的 XML 似乎有效。您的 SAX 程序似乎有问题。
  • 目前这不是一个好问题,我们没有时间也没有兴趣阅读太多链接材料来解决您的问题。将您的问题提炼为特定问题,然后您可能会获得更多帮助。 (您可以编辑自己的问题并添加更多信息 - 不是 cmets)
  • (1) 请编辑您的问题并将您的 cmets 中的其他内容放入其中 - 这样您可以更好地格式化它; (2) 请出示您的代码:尝试过什么,您认为问题出在代码的什么地方?

标签: java dom


【解决方案1】:

有一个 link 包含分步文档。

这是一个示例 XML 文件:

<bank>
    <customer id="1">
        <first>John</first>
        <last>Smith</last>
        <address>1 Broadway, San Fransico, CA</address>
        <balance>3230</balance>
    </customer>
    <customer id="2">
        <first>Bill</first>
        <last>Gates</last>
        <address>555 Microsoft Way, Redmond, WA</address>
        <balance>9876543</balance>
    </customer>
</bank>

以及解析它的代码:

public class BankTest {

    final StackContentHandler handler = new StackContentHandler();
    final Bank bank = new Bank();

    public BankTest() {
        handler.setElementHandler("bank", "customer", new CustomerHandler());
        handler.connect("customer","first", "customer.firstName");
        handler.connect("customer","last", "customer.lastName");
        handler.connect("customer","address", "customer.address");
        handler.connect("customer","balance", "customer.balance");

        try {
            SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
            parser.parse(new File("d:\\mybank.xml"), handler);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public class CustomerHandler extends ElementAdapter {
        private Customer customer;

        public void startElement(ElementHandler parent, String element, Attributes attributes) throws SAXException {
            customer = new Customer();
            customer.setId(Integer.parseInt(attributes.getValue("id")));
            bank.addCustomer(customer);
        }

        public Customer getCustomer() {
            return customer;
        }
    }
}

更多信息请使用link

【讨论】:

  • 是的,如果有人分享上述 xml 的示例 sn-p,那就太好了
【解决方案2】:

你可以使用Xstream将XML解析成java对象,简单易学。 这是Xstream Tutorial

【讨论】:

  • @Nivesh xstream 看起来更好,但是如何处理 之类的东西,如何设置名称?
  • 请帮助解决这个 Dom 解析器以解析在 stackoverflow 中发布的 xml 问题
【解决方案3】:

我的建议是你使用 JAXB 标准,使用 jaxb 的好处是:

  1. 这是标准的。
  2. 使用简单。
  3. 同时支持 Marshal 和 Unmarshal。
  4. 它是Java中XML处理的最新版本,在JAXP之后发布

你可以在这里找到好的教程:

  1. http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDEQFjAA&url=http%3A%2F%2Fjaxb.java.net%2Ftutorial%2F&ei=E9cwT5GlI4aR-wau7OTpBQ&usg=AFQjCNGP2lvdm22FIL5JJO3exd9m067O6g&sig2=G07GhxXn_6tMfyTCr_fGDg

  2. http://www.vogella.de/articles/JAXB/article.html

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2013-07-18
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多