必须将我的原始XML转换为我的应用程序可以理解的所需XML。
使用DOM(将其作为限制)并且不幸的是我只能使用Java,DOM。但是尝试过XSLT,但遗憾的是不允许使用它。
输入:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:EMessage xmlns:ns0="http://www.abc/Something">
<ns0:Header>
<ns0:Snumber>1613</ns0:Snumber>
</ns0:Header>
<ns0:Name>SomeEvent</ns0:Name>
<ns0:NameSpace>http://www.abc/Something.xsd</ns0:NameSpace>
<ns0:Id>3</ns0:Id>
<ns0:myProperty>
<ns0:Name>ExtId</ns0:Name>
<ns0:Value>TEST_ID_12</ns0:Value>
</ns0:myProperty>
<ns0:myProperty>
<ns0:Name>CVersion</ns0:Name>
<ns0:Value>0</ns0:Value>
</ns0:myProperty>
</ns0:EMessage>
直到现在我的试用版和谷歌我已到达此处。
<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:EMessage xmlns:ns0="http://www.abc/Something">
<ns0:Header>
<ns0:Snumber>1613</ns0:Snumber>
</ns0:Header>
<ns0:Name>SomeEvent</ns0:Name>
<ns0:NameSpace>http://www.abc/Something.xsd</ns0:NameSpace>
<ns0:Id>3</ns0:Id>
<ns0:eventProperty>
<ExtId>TEST_ID_12</ExtId>
</ns0:eventProperty>
<ns0:eventProperty>
<CVersion>0</CVersion>
</ns0:eventProperty>
</ns0:EMessage>
在上面的代码中,我将root作为<ns0:EMessage>
元素并将所有节点作为列表节点。通过创建一个从输入原始XML中提取值的新元素,将元素转换为所需的形式。但是作为i将</ns0:eventProperty>
作为父。我不需要这个元素,所以基本上我需要删除这个父节点,这个父节点的子节点应该成为<ns0:EMessage>
的子节点。我不需要触摸其他元素。
所需的输出
<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:EMessage xmlns:ns0="http://www.abc/Something">
<ns0:Header>
<ns0:Snumber>161003</ns0:Snumber>
</ns0:Header>
<ns0:Name>SomeEvent</ns0:Name>
<ns0:NameSpace>http://www.abc/Something.xsd</ns0:NameSpace>
<ns0:Id>3</ns0:Id>
<ExtId>TEST_ID_12</ExtId>
<CVersion>0</CVersion>
</ns0:EMessage>
尽我所能。希望现在有所帮助。谢谢你提前
答案 0 :(得分:2)
回答我自己的问题很奇怪。但最后我得到了逻辑和答案。
尽管将元素添加到<ns0:eventProperty>
父元素,但应将新创建的元素直接添加到<ns0:EMessage>
的根。
注意 ::整个过程将在一个循环中完成。使用当前父项并使用数据创建immideate子项,通过执行root.appendChild(newChildElement)
然后在相同的循环中将为所有子元素运行将删除当前父逻辑放在END中。一旦创建了新元素,只需删除当前父元素。