java 。移动与子级具有相同标签名称的 xml

标签 java xml tags element parent

我遇到的问题是我必须使用我工作的公司的提供商发送给我的 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

其余部分完全一样。工作完美。

最佳答案

getElementsByTagName 为您提供该标签内名为“product”的所有标签,包括颜色的“product”标签。 尝试使用 getChildNodes 并检查节点的名称

关于 java 。移动与子级具有相同标签名称的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263993/

相关文章:

java xsl 转换副本删除 namespace 前缀

xml - 如何在for-each循环中根据属性值放置条件

通过http ://does not clone all tags Git克隆

html - 如何使 HTML ID 超出我的容器?

java - 处理java中的OutOfMemory错误

java - fragment 交易问题

python - 使用 python 修复格式错误的 XML

python - 模板标签值中的 Django 非 ASCII 字符

java - 如何提取泛型类型参数的数据类型?

java - 无法在多文档事务中创建命名空间(MongoDB 4.0、Spring Data 2.1.0、Spring Boot)