У меня есть этот XML:Сравните предыдущий атрибут XML с током в Java
<note>
<text style="italic">Lorem ipsum dolor sit amet</text>
<text style="italic">consectetur adipisicing elit, </text>
<text>sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</text>
<text style="bold">Ut enim ad minim veniam, quis nostrud exercitation</text>
<text>ullamco</text>
</note>
Вот моя проблема:
Я хочу, чтобы цикл через XML и сравнить атрибуты с предыдущим атрибутом, чтобы увидеть, если они одинаковы. Если они одинаковы, я ничего не хочу делать. Если они не совпадают, я хочу сохранить значение атрибута (курсив, полужирный и т. Д.) В ArrayList.
Вот мой код:
List<String> styles = new ArrayList<String>();
List<Node> textNodesXML = new ArrayList<Node>();
textNodesXML = xpath.getNodes("/note/text");
for (Node n : textNodesXML)
{
Node attribute = n.getAttributes().getNamedItem("style");
Node nextSibling = getTheNextSibling(n);
Node siblingAttribute= nextSibling .getAttributes().getNamedItem("style");
//Code is working up until here.
if (attribut != null && siblingAttribute.getNodeValue() != attribute.getNodeName())
{
styles.add(attribute.getTextContent());
}
}
public static Element getTheNextSibling(Node node)
{
Node sibling = node.getNextSibling();
while (sibling != null)
{
if (sibling.getNodeType() == Node.ELEMENT_NODE)
{
return (Element) sibling;
}
sibling = sibling.getNextSibling();
}
return null;
}
Я хочу, чтобы это земля в моих стилях ArrayList:
italic
bold
Большое спасибо
Легче использовать 'HashMap' для проверки. Вы хотите проверить только атрибут предыдущего элемента или всех атрибутов, которые были ранее? – Stefan
Только предыдущий атрибут. Как я могу использовать HashMap? – chichi
Что произойдет, если у вас есть 4 элемента, которые чередуются с одним и тем же атрибутом? Например: курсив, ничего, курсив, ничего? Ваше сравнение добавит 2 курсива в 'ArrayList'. Это желаемое поведение? – Stefan