我需要从两个来源解析xml文件。两个xml文件都包含相同的内容,但每个源都使用自己的模式。这意味着我想从xml文件中提取的值将存储在不同的元素名称中,具体取决于文件的来源。
这是一个例子 - 假设我只对产品的“名称”感兴趣。
Source 1
-------------------------
<item>
<itemname>Camera</itemname>
<itemprice>20</itemprice>
</item>
Source 2
-------------------------
<productList>
<productName>Camera</productname>
<ProductPrice>20</productprice>
</productList>
要解析上面的内容,我必须知道xml文件的来源,然后再做一个
getElementsByTagName("itemname");
或
getElementsByTagName("productName");
我最初的计划是为每个源的xml文件提供不同的解析器,但我想如果我指定了我需要的元素的路径,也许我可以写一个通用的解析器。这样做的好处是我可以从任何源处理任何xml文件,而无需修改解析器。
我在想做的是将元素的路径存储到属性文件中。即
source1.name="itemname"
source2.name=productName
然后,通用解析器将根据我提供的名称检索元素。这可能会有效,但我想如果我对多个元素感兴趣,通过属性文件维护它可能很麻烦。
有没有更好的方法来解决上述问题?请注意,我限制的一个限制是目标平台是JDK 1.4,因此xpath等不起作用。
答案 0 :(得分:1)
理想的解决方案是XPath。无论XML输入有多么不同,您都可以将每个XPath存储为属性文件中的字符串。有几个兼容XPath的解析器可以与JDK 1.4一起使用。
答案 1 :(得分:0)
如果元素名称遵循约定(* Name,* Price),则可以使用通配符和XPath编写通用解析函数。或者你可以根据标签顺序编写它,如果它们总是相同的(你可以在没有XPath的情况下这样做)。