Это странно, но позвольте мне изо всех сил попробовать это.
У меня есть XML, который я читаю обычным способом с рабочего стола и разбираю его через парсер DOM.
<?xml version="1.0" encoding="UTF-8"?>
<Abase
xmlns="www.abc.com/Events/Abase.xsd">
<FVer>0</FVer>
<DV>abc App</DV>
<DP>abc Wallet</DP>
<Dversion>11</Dversion>
<sigID>Ss22</sigID>
<activity>Adding New cake</activity>
</Abase>
Чтение XML для получения дочерних элементов.
Document doc = docBuilder.parse("C://Users//Desktop//abc.xml");
Node root = doc.getElementsByTagName("Abase").item(0);
NodeList listOfNodes = root.getChildNodes(); //Sysout Prints 13
Итак, моя логика работает хорошо. Когда я пытаюсь сделать это, нажав один и тот же XML в очередь и прочитав его и получив дочерние узлы, он мне не дает. дочерних узлов - 6.
Document doc=docBuilder.parse(new InputSource(new ByteArrayInputStream(msg.getBytes("UTF-8"))));
Node root = doc.getElementsByTagName("Abase").item(0);
NodeList listOfNodes = root.getChildNodes(); //Sysout Prints 6
это задевает мою логику разбора XML. Может ли кто-нибудь помочь мне?
UPDATE
Добавление логики отправки:
javax.jms.TextMessage tmsg = session.createTextMessage();
tmsg.setText(inp);
sender.send(tmsg);
ПРОБЛЕМА Если я прочитал этот xml с рабочего стола, он говорит 13 дочерних элементов, 6 элементов node и 7 текстовых узлов. Общая логика:
- Прочитайте все дочерние элементы и выполните итерацию по списку дочерних элементов.
- Если node текст ISNOT node, войдите в блок if, добавьте один родительский элемент с двумя дочерними элементами и добавьте к существующему ROOT.Then получите NodeName и получите TextContext между элементом node и нажмите их как setTextContext для обоих дети соответственно.
- Итак, теперь у меня есть новый ELEMENT node, у которого есть два дочерних элемента. И поскольку мне не нужен уже существующий элемент node, который по-прежнему является дочерним элементом root, Last am am их удаляет.
Итак, вышеприведенная логика все ввернута, если я нажимаю XML на очередь и занимаюсь им для выполнения той же логики.
OUTPUT XML, который приносит хорошие результаты, когда я читаю с рабочего стола, но чтение из очереди вызывает проблему, потому что оно винит полное дерево.
<Abase
xmlns="www.abc.com/Events/Abase.xsd">
<Prop>
<propName>FVer</propName>
<propName>0</propName> //similarly for other nodes
</Prop>
</Abase>
Спасибо