【问题标题】:Getting a raw xml code from a single DOM element从单个 DOM 元素获取原始 xml 代码
【发布时间】:2015-09-03 14:17:45
【问题描述】:

我目前正在尝试使用带有 Java 语言的 DOM 获取 xml 的一部分。 例如,我希望能够将 XML 元素(标签)的原始代码及其子节点作为字符串作为字符串。

例子:

XML 文件:

<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

我们的目标是为第一本书元素添加这个:

    <book category="cooking">
     <title lang="en">Everyday Italian</title>
     <author>Giada De Laurentiis</author>
     <year>2005</year>
     <price>30.00</price>
    </book>

我正在查看 Element 方法,但在其中找不到对此有用的方法。

谢谢。

【问题讨论】:

    标签: java xml parsing dom


    【解决方案1】:

    W3C DOM 没有像其他 Java XML API 那样方便的“toXML”,您需要使用javax.xml.transform API 或org.w3c.dom.ls.LSSerializer。假设变量doc 包含DOM Document,您可以像这样获得LSSerializer 的实例:

    // import org.w3c.dom.ls.*;
    
    DOMImplementationLS ls = (DOMImplementationLS)doc.getImplementation();
    LSSerializer ser = ls.createLSSerializer();
    

    一旦您拥有其中之一,您就可以使用以下方法将该文档中的任何Node 序列化为 XML 字符串

    String xml = ser.writeToString(node);
    

    【讨论】:

      【解决方案2】:

      查看 xpath。虽然 xpath 通常用于 HTML 的上下文中,但它代表 XML 路径语言,请尝试以下操作。

      //书[包含(@category,'cooking')]

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 2013-02-14
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2018-11-30
      相关资源
      最近更新 更多