【发布时间】:2015-08-28 05:35:35
【问题描述】:
我遇到的问题是我必须使用我工作的公司的供应商发送给我的 xml 文件。
如果 xml 构造良好但根本不是这样,这将不是问题。
<catalog>
<product>
<ref>4780</ref>
.
.
.
<arrivals>
<product>
<image title="AMARILLO">AMA</image>
<size>S/T </size>
</product>
<product>
<image title="AZUL">AZUL</image>
<size>S/T </size>
</product>
</arrivals>
</product>
</catalog>
如您所见,标签<product>包含了产品的所有信息,但名称为<product>的标签更多,以区分不同的颜色。
这是我用来在 xml 中移动的代码。
doc = db.parse("filename.xml");
Element esproducte = (Element)doc.getElementsByTagName("product").item(0);
NodeList nArrv = esproducte.getElementsByTagName("arrivals");
Element eArrv = (Element) nArrv.item(0);
NodeList eProds = eArrv.getElementsByTagName("product");//THIS THING
for(int l=0; l<eProds.getLength(); l++)
{
Node ln = eProds.item(l);
if (ln.getNodeType() == Node.ELEMENT_NODE)
{
Element le = (Element) ln;
//COLORS / IMAGES / CONFIGS
NodeList nimgcol = le.getElementsByTagName("image");
Element eimgcol = (Element) nimgcol.item(0);
System.out.println("Name of the color " + eimgcol.getTextContent());
}
发生的情况是打印重复了更多次,我认为这是因为父 <product>。我认为这不应该发生,因为我写//THIS THING 的地方我考虑到<product> 设置在<arrivals> 中的事实。但它不起作用。
我应该在代码中修改什么以在 for 中只移动 2 次而不是 3 次,在这种情况下会发生什么?
解决办法:
NodeList eProds = eArrv.getElementsByTagName("product");//THIS THING
到
NodeList eProds = eArrv.getChildNodes();//THIS THING
其余的完全一样。完美运行。
【问题讨论】:
标签: java xml tags element parent