用于 XML 编辑、更新的 DOM 解析器

Posted

技术标签:

【中文标题】用于 XML 编辑、更新的 DOM 解析器【英文标题】:DOM parser for XML Edit, Update 【发布时间】:2019-02-09 02:31:50 【问题描述】:

感谢所有帮助我使用 DOM 解析器解析 XML 的帖子。

我不知道如何使用 DOM 解析器在我的 XML 文件中动态添加如下数据,谁能帮我解决这个问题。

谢谢。

<group
    android:name="Marker Group Left Front Wing Mirror Cover"
    android:scaleX="1"
    android:scaleY="1"
    android:translateX="1778.866765"
    android:translateY="331.3570720">
    <path
        android:name="Marker Red"
        android:fillColor="#ff0031"
        android:pathData="M36.387 0.355c-19.829 0 -35.959 16.13 -35.959 35.959 0 24.607 32.177 60.732 33.546 62.26 1.288 1.429 3.535 1.427 4.821 0 1.369 -1.526 33.551 -37.65 33.551 -62.26 0 -19.829 -16.13 -35.959 -35.959 -35.959zm0 54.053c-9.976 0 -18.093 -8.116 -18.093 -18.094 0 -9.976 8.117 -18.091 18.093 -18.091 9.978 0 18.095 8.115 18.095 18.091 0 9.978 -8.117 18.094 -18.095 18.094z" />
</group>

我想将以上数据添加到以下节点:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:
android:
android:viewportHeight="1800"
android:viewportWidth="2880">

NEED TO ADD ABOVE group node HERE

</vector>

【问题讨论】:

【参考方案1】:

在元素和属性上做了几次研发,终于找到了解决办法。

Element group = doc.createElement("group");
    group.setAttribute("android:name", "Marker Group Left Front Wing Mirror Cover");
    group.setAttribute("android:scaleX", "1");
    group.setAttribute("android:scaleY", "1");
    group.setAttribute("android:translateX", "1778.866765");
    group.setAttribute("android:translateY", "331.3570720");

    Element root = doc.getDocumentElement();
    (here root is my vector in which i want to add group element)
    root.appendChild(group);

上面的代码会将组添加到我的向量中。

Element path = doc.createElement("path");
path.setAttribute("android:name", "Marker Red");
path.setAttribute("android:fillColor", "#ff0031");
path.setAttribute("android:pathData", "M36.387 0.355c-19.829 0 -35.959 16.13 -35.959 35.959 0 24.607 32.177 60.732 33.546 62.26 1.288 1.429 3.535 1.427 4.821 0 1.369 -1.526 33.551 -37.65 33.551 -62.26 0 -19.829 -16.13 -35.959 -35.959 -35.959zm0 54.053c-9.976 0 -18.093 -8.116 -18.093 -18.094 0 -9.976 8.117 -18.091 18.093 -18.091 9.978 0 18.095 8.115 18.095 18.091 0 9.978 -8.117 18.094 -18.095 18.094z");


root.getLastChild().appendChild(path);
上面的代码会将路径添加到我的组,它是根元素向量的最后一个子元素。

【讨论】:

以上是关于用于 XML 编辑、更新的 DOM 解析器的主要内容,如果未能解决你的问题,请参考以下文章

PHP XML Expat 解析器

使用 XSD、目录解析器和用于 XSLT 的 JAXP DOM 验证 XML

JAVA之DOM和SAX解析器

用于操作/编辑现有 xml 文档的最佳 java Xml 解析器

DOM、SAX 和 StAX XML 解析器之间有啥区别? [关闭]

用于 Java 的 HTML/XML 解析器 [关闭]