java - 将 xml 元素移动到 xml 文件中的新位置

标签 java xml xml-parsing

我想将特定的 xml 元素移动到列表的顶部。

xml 输入:

<?xml version="1.0" encoding="UTF-8"?>
<Values>       
    <Elem Value="1"/>    
    <Elem Value="2"/>
    <Elem Value="3"/>
</Values>

期望的结果:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Values>       
    <Elem Value="2"/>
    <Elem Value="1"/>      
    <Elem Value="3"/>
</Values>

这是我的代码:

String valueToFind = "2";

File mFile = new File("C:\\xml.xml");
DocumentBuilder builder;
try {
    builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

    Document document = builder.parse(mFile);

    NodeList nodeList = document.getElementsByTagName("Elem");
    Element element = null;

    for (int i = 0; i < nodeList.getLength(); i++) {
    element = (Element) nodeList.item(i);
    String value = element.getAttribute("Value");

    if (valueToFind.equals(value))
        break;
        else
       element = null;
    }

    if (element != null) {
    document.getDocumentElement().removeChild(element);
    document.getDocumentElement().insertBefore(element, nodeList.item(0));
    }

    Source source = new DOMSource(document);
    Result result = new StreamResult(mFile.getPath());

    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
    transformer.transform(source, result);
}

但结果不正确:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Values>       
    <Elem Value="2"/>
    <Elem Value="1"/>    

    <Elem Value="3"/>
</Values>

为什么我得到空行?!

最佳答案

原始 XML 文件包含带空格的文本节点。您的代码仅删除 Elem 节点并将其插入列表顶部,但保留包含换行符的文本节点。

关于java - 将 xml 元素移动到 xml 文件中的新位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10223063/

相关文章:

java - 使用javamail检查附件而不获取邮件内容

java - 为什么我们在获取质因数时不必检查数字是否为质数?

python - 有没有办法删除 ElementTree.tostring 方法添加的 xml header ?

.net - XmlDocument.ImportNode 的 XDocument 等效项是什么?

SQL Server T-SQL 使用 FOR XML PATH 将数据导入 XML

java - Java线程生产者和使用者

java - Java 中 ServletContext 的输出没有达到预期?

c# - 从 C# 中读取 XML

java - 在Java中将HTML解析为字符串

android - 添加指向从 xml 文件解析的内容的链接