2010-09-10 60 views
-1

我需要一个快速的帮助来解决一个棘手的问题,这实际上让我发疯。找出差异!

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; 
} 

第一个字符串(例如)被正确地解析时,第二个(例2)返回null。

任何想法为什么?我真的不能看到2之间的任何区别!

在此先感谢我敢肯定,这东西这么愚蠢,我会感到羞耻......

编辑:实际上字符串中的内容相同,还是2个不同的结局...... 我会尽力比较他们...

+1

所以看你的代码,好像你应该有一个堆栈跟踪与我们分享。 – 2010-09-10 16:34:47

+0

没有堆栈的痕迹,没有例外,只是一个空的结果... – user444540 2010-09-10 16:44:41

+0

我的意思是,我得到的唯一例外是实现此代码的方法之外的空指针。 – user444540 2010-09-10 16:51:09

回答

1

您在第二个note标记中缺少</src>标记。

+1

你确定吗?它看起来对我来说是封闭的。 – 2010-09-10 16:33:20

+1

它是自动关闭的,但由于某种原因后面有一些文本:' wer'。那是什么“更适合”? – mkb 2010-09-10 16:35:39

+0

@Matt,即完美*合法的XML。它类似于xhtml:


Hello
。 – 2010-09-10 16:36:22

0

这次可能没有帮助,但我通常会将XML粘贴到Eclipse中的* .xml文件中,然后自动格式化该文件(ctrl-shift-f),这使得事情变得如此之多,眼球容易得多。

+0

Notepad ++也适用于此。 http://notepad-plus.sourceforge.net – Freiheit 2010-09-10 16:51:07

2

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

0

我知道我会感到羞耻。

拼写错误,archivalDate在一个和档案 alDate在其他。

Plese bie me now ...

+1

你为什么不复制一个并粘贴到另一个?这整个问题很荒谬。 – 2010-09-10 17:15:38

+0

如果你用更一般的术语来考虑问题,我不认为这个问题是荒谬的。考虑这种方式“我的XML解析器设置为正确使用此示例::插入示例1 ::。当我喂它另一个示例::示例2 ::它失败。我怀疑样本之间有一些细微的差异。我如何找到它?“查看输入不是找到这些东西的有效或简单的方法。选择的解析器报告问题,但不能/不会报告问题出在哪里。因此,对这两个样本进行众包评审是不好的,但是查看可用于自动化的工具是很好的。 – Freiheit 2010-09-10 17:23:29

+0

我同意用户 - 我曾多次尝试弄清楚为什么客户端发送给我们的xml代码不起作用,尽管我们的测试用例确实存在,并且他们基于他们发送给我们的xml这导致我总是寻找无形的字符,顺便说一句) – aperkins 2010-09-10 17:37:41

0

嘿!你在说the second one (example2)你确定你在解析example4?而不是所谓的example2可能为空?

我测试了你的代码,我没有得到任何异常。 如果不是的话,我敢肯定你是在处理一些节点,这并不在第二个XML存在 - example4 - 如archivalDate