指出不同!

时间:2010-09-10 16:29:09

标签: java dom xml-parsing

我需要快速帮助解决一个让我疯狂的棘手问题。

String example = "<digitalObject>" +
                 "<title>title</title>" +
                 "<creator>Name</creator>" +
                 "<location>link</location>"+
                 "<relatedAsset>related realife object</relatedAsset>" +
                 "<note><src lang =\"en\">value</src></note>" +
                 "<archivalDate>date</archivalDate>"+
                 "<mimeFormat>mime type</mimeFormat>"+
                 "<digitalObjectOwner>owner</digitalObjectOwner>"+
                 "</digitalObject>";

String example4="<digitalObject>" + 
                "<title>title</title>"+
                "<creator>name</creator>"+ 
                "<location>link</location>"+
                "<relatedAsset>related realife object</relatedAsset>" + 
                "<note><src lang=\"en\">value</src></note>" + 
                "<archivialDate>date</archivialDate>"+
                "<mimeFormat>mime type</mimeFormat>" + 
                "<digitalObjectOwner>owner</digitalObjectOwner>" + 
                "</digitalObject>";

以下代码获取w3c.dom.Document对象

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document doc=null;
try {
builder = factory.newDocumentBuilder();

InputSource is = new InputSource();
is.setCharacterStream(new StringReader(example4));
doc = builder.parse(is);
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    }

    return doc;
}

第一个字符串(示例)被正确解析,第二个字符串(example2)返回null。

知道为什么吗?我真的看不出2 !!

之间的任何区别

先谢谢,我确定这是一件让人感到羞耻的事情......

编辑:实际上字符串中的内容相同,仍有2个不同的结果...... 我会尝试区分它们......

6 个答案:

答案 0 :(得分:2)

你检查过隐形字符吗?我在过去发现xml中有不可见的字符与我期望发送的字符不同。

答案 1 :(得分:1)

您错过了第二个</src>标记中的note

答案 2 :(得分:0)

让计算机完成工作:http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html#difference(java.lang.String,java.lang.String)

如果您希望结构相同但内容不同,则只应在输出中看到内容更改。

答案 3 :(得分:0)

这次可能没有帮助,但我通常会将XML粘贴到Eclipse中的* .xml文件中,然后自动格式化文件(ctrl-shift-f),这使得这样的事情变得更加容易。 / p>

答案 4 :(得分:0)

我知道我会感到羞耻。

拼写错误,archivalDate在一个,archiv i alDate在另一个。

现在请埋葬我......

答案 5 :(得分:0)

喂!你是说the second one (example2)你确定要解析example4吗?而不是名为example2的东西可能是空的?

我测试了你的代码,但我没有得到任何异常。 如果不是这样,我很确定你正在处理第二个xml中不存在的某个节点 - example4 - 例如archivalDate