-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
45 lines (45 loc) · 48.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html><html lang="zh-CN"><head><meta name="generator" content="Hexo 3.9.0"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta name="description" content="欢迎来到晋的博客,本博客用来收录平时学习笔记,欢迎访问"><title>jaxp解析xml文档实现增删改查 | ZJ_BLOG</title><link rel="stylesheet" type="text/css" href="/css/style.css?v=0.0.1"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/normalize/7.0.0/normalize.min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/1.0.0/pure-min.css"><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/pure/1.0.0/grids-responsive-min.css"><link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css"><script type="text/javascript" src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script><link rel="Shortcut Icon" type="image/x-icon" href="/favicon.ico"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="apple-touch-icon-precomposed" href="/apple-touch-icon.png"><script type="text/javascript" src="http://p18j2ow6f.bkt.clouddn.com/static/css/instantclick.min.js"></script><script>InstantClick.init();
InstantClick.on('change', function (isInitialLoad) {
if (isInitialLoad === false) {
if (typeof MathJax !== 'undefined') // support MathJax
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
if (typeof prettyPrint !== 'undefined') // support google code prettify
prettyPrint();
if (typeof _hmt !== 'undefined') // support 百度统计
_hmt.push(['_trackPageview', location.pathname + location.search]);
if (typeof ga !== 'undefined') // support google analytics
ga('send', 'pageview', location.pathname + location.search);
}
});
</script><link rel="alternate" type="application/atom+xml" href="/atom.xml"></head><body><div class="body_container"><div id="header"><div class="site-name"><h1 class="hidden">jaxp解析xml文档实现增删改查</h1><a id="logo" href="/.">ZJ_BLOG</a><p class="description">Silence的博客</p></div><div id="nav-menu"><a class="current" href="/."><i class="fa fa-home"> 首页</i></a><a href="/archives/"><i class="fa fa-archive"> 归档</i></a></div></div><div class="pure-g" id="layout"><div class="pure-u-1 pure-u-md-3-4"><div class="content_container"><div class="post"><h1 class="post-title">jaxp解析xml文档实现增删改查</h1><div class="post-meta">Feb 5, 2017<span> | </span><span class="category"><a href="/categories/DOM操作/">DOM操作</a><a href="/categories/DOM操作/XML/">XML</a></span></div><div class="post-content"><h2 id="这是被解析的示例xml"><a href="#这是被解析的示例xml" class="headerlink" title="这是被解析的示例xml"></a>这是被解析的示例xml</h2><figure class="highlight xml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta"><?xml version="1.0" encoding="UTF-8" standalone="no"?></span></span><br><span class="line"><span class="tag"><<span class="name">书架</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">书</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">书名</span>></span>java实战<span class="tag"></<span class="name">书名</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">作者</span>></span>张三<span class="tag"></<span class="name">作者</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">售价</span>></span>121元<span class="tag"></<span class="name">售价</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">售价</span>></span>12元<span class="tag"></<span class="name">售价</span>></span></span><br><span class="line"> <span class="tag"></<span class="name">书</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">书</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">书名</span> <span class="attr">color</span>=<span class="string">"yellow"</span> <span class="attr">name</span>=<span class="string">"XXX"</span>></span>c测试<span class="tag"></<span class="name">书名</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">作者</span>></span>李四<span class="tag"></<span class="name">作者</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">售价</span> <span class="attr">color</span>=<span class="string">"rrr"</span>></span>54元<span class="tag"></<span class="name">售价</span>></span></span><br><span class="line"> <span class="tag"><<span class="name">售价</span>></span>12元<span class="tag"></<span class="name">售价</span>></span><span class="tag"></<span class="name">书</span>></span></span><br><span class="line"><span class="tag"></<span class="name">书架</span>></span></span><br></pre></td></tr></table></figure>
<p><strong>增加</strong></p>
<a id="more"></a>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> cn.xml;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.OutputStream;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> javax.xml.crypto.dsig.Transform;</span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilder;</span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilderFactory;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.*;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.dom.DOMSource;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.stream.StreamResult;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Document;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Element;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Node;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo03_xml_add</span> </span>{</span><br><span class="line"> <span class="comment">//4.向XML文档中添加节点 <售价>12元</售价></span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">add</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//在内存中的xml中创造一个节点</span></span><br><span class="line"> Element price = document.createElement(<span class="string">"售价"</span>);<span class="comment">//得到标签</span></span><br><span class="line"> price.setTextContent(<span class="string">"12元"</span>);<span class="comment">//添加标签中内容</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//先得到书节点 转换为标签</span></span><br><span class="line"> Element book = (Element)document.getElementsByTagName(<span class="string">"书"</span>).item(<span class="number">0</span>);</span><br><span class="line"> <span class="comment">//把创造的节点添加到xml文档中书标签下</span></span><br><span class="line"> book.appendChild(price);</span><br><span class="line"> <span class="comment">//此时只更新了内存中的XML文档(document对象指向的) 所以要把document对象指向的内存中的xml文档更新到硬盘中的xml文档</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//更新后的写入XML文档</span></span><br><span class="line"> <span class="comment">//创建工厂实例</span></span><br><span class="line"> TransformerFactory tf = TransformerFactory.newInstance();</span><br><span class="line"> <span class="comment">//通过工厂实例得到Transformer对象(transform方法可以转化来源到目的地)</span></span><br><span class="line"> Transformer tr = tf.newTransformer();</span><br><span class="line"> <span class="comment">//DOMSource是Source的实现类 把Document类型封装为Source类型</span></span><br><span class="line"> Source s = <span class="keyword">new</span> DOMSource(document);</span><br><span class="line"> <span class="comment">//声明输出流对象 指向硬盘中的XML文件</span></span><br><span class="line"> OutputStream f= <span class="keyword">new</span> FileOutputStream(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"> <span class="comment">//把输出流对象通过流方法转化为Result对象 Result对象指向硬盘中的XML文件</span></span><br><span class="line"> Result r = <span class="keyword">new</span> StreamResult(f);</span><br><span class="line"> <span class="comment">//transform方法(来源, 目的地) 把s写入r</span></span><br><span class="line"> tr.transform(s, r);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//5.向XML文档中指定位置添加节点 <售价>999元</售价></span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">add2</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> Element price = document.createElement(<span class="string">"售价"</span>);</span><br><span class="line"> price.setTextContent(<span class="string">"999元"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//得到参考节点 即下一个标签(Element是Node的一个子集 Element是Node的扩展)</span></span><br><span class="line"> Element refNode = (Element) document.getElementsByTagName(<span class="string">"售价"</span>).item(<span class="number">1</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//得到要插入的节点</span></span><br><span class="line"> Element book = (Element) document.getElementsByTagName(<span class="string">"书"</span>).item(<span class="number">0</span>); </span><br><span class="line"> <span class="comment">//插入book节点的指定位置 把price节点插入refNode节点之前</span></span><br><span class="line"> book.insertBefore(price, refNode);<span class="comment">//参数也可以是标签 </span></span><br><span class="line"></span><br><span class="line"> TransformerFactory tf = TransformerFactory.newInstance();</span><br><span class="line"> Transformer tr = tf.newTransformer();</span><br><span class="line"> tr.transform(<span class="keyword">new</span> DOMSource(document), <span class="keyword">new</span> StreamResult(<span class="keyword">new</span> FileOutputStream(<span class="string">"src/cn/xml/book.xml"</span>)));</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//6.向XML文档中添加属性</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">add3</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//得到节点</span></span><br><span class="line"> Element bookname = (Element) document.getElementsByTagName(<span class="string">"书名"</span>).item(<span class="number">0</span>);</span><br><span class="line"> bookname.setAttribute(<span class="string">"name"</span>, <span class="string">"XXX"</span>);</span><br><span class="line"></span><br><span class="line"> TransformerFactory tf = TransformerFactory.newInstance();</span><br><span class="line"> Transformer tr = tf.newTransformer();</span><br><span class="line"> tr.transform(<span class="keyword">new</span> DOMSource(document), <span class="keyword">new</span> StreamResult(<span class="keyword">new</span> FileOutputStream(<span class="string">"src/cn/xml/book.xml"</span>)));</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p><strong>删除</strong></p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> cn.xml;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilder;</span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilderFactory;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.Transformer;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.TransformerFactory;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.dom.DOMSource;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.stream.StreamResult;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Document;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Element;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo03_xml_delete</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">delete</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//得到要删除的节点</span></span><br><span class="line"> Element price = (Element) document.getElementsByTagName(<span class="string">"售价"</span>).item(<span class="number">2</span>);</span><br><span class="line"> <span class="comment">//得到要删除节点的父节点</span></span><br><span class="line"> Element book = (Element) document.getElementsByTagName(<span class="string">"书"</span>).item(<span class="number">1</span>);</span><br><span class="line"> <span class="comment">//通过父节点删除子节点</span></span><br><span class="line"> book.removeChild(price);</span><br><span class="line"></span><br><span class="line"> TransformerFactory tf = TransformerFactory.newInstance();</span><br><span class="line"> Transformer tr = tf.newTransformer();</span><br><span class="line"> tr.transform(<span class="keyword">new</span> DOMSource(document), <span class="keyword">new</span> StreamResult(<span class="keyword">new</span> FileOutputStream(<span class="string">"src/cn/xml/book.xml"</span>)));</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">delete2</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> Element price = (Element) document.getElementsByTagName(<span class="string">"售价"</span>).item(<span class="number">3</span>);</span><br><span class="line"> <span class="comment">//通过子节点得到父节点再删除自己</span></span><br><span class="line"> price.getParentNode().removeChild(price);</span><br><span class="line"> <span class="comment">//其他:通过子节点得到父节点的父节点的父节点 (删除父节点)...删除整个xml文档中的节点</span></span><br><span class="line"> <span class="comment">//price.getParentNode().getParentNode().getParentNode().removeChild(price.getParentNode().getParentNode());</span></span><br><span class="line"> <span class="comment">//删除指定节点的属性</span></span><br><span class="line"> <span class="comment">//price.removeAttribute("color");</span></span><br><span class="line"></span><br><span class="line"> TransformerFactory tf = TransformerFactory.newInstance();</span><br><span class="line"> Transformer tr = tf.newTransformer();</span><br><span class="line"> tr.transform(<span class="keyword">new</span> DOMSource(document), <span class="keyword">new</span> StreamResult(<span class="keyword">new</span> FileOutputStream(<span class="string">"src/cn/xml/book.xml"</span>)));</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p><strong>更新</strong></p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> cn.xml;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> java.io.FileOutputStream;</span><br><span class="line"><span class="keyword">import</span> java.io.IOException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilder;</span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilderFactory;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.Transformer;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.TransformerFactory;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.dom.DOMSource;</span><br><span class="line"><span class="keyword">import</span> javax.xml.transform.stream.StreamResult;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Document;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Element;</span><br><span class="line"><span class="keyword">import</span> org.xml.sax.SAXException;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo03_xml_update</span> </span>{</span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">update</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> Element price = (Element) document.getElementsByTagName(<span class="string">"售价"</span>).item(<span class="number">1</span>);</span><br><span class="line"> price.setTextContent(<span class="string">"123.456元"</span>);<span class="comment">//更新标签中内容</span></span><br><span class="line"> price.setAttribute(<span class="string">"color"</span>, <span class="string">"eeed"</span>);<span class="comment">//更新标签属性</span></span><br><span class="line"></span><br><span class="line"> TransformerFactory tf = TransformerFactory.newInstance();</span><br><span class="line"> Transformer tr = tf.newTransformer();</span><br><span class="line"> tr.transform(<span class="keyword">new</span> DOMSource(document), <span class="keyword">new</span> StreamResult(<span class="keyword">new</span> FileOutputStream(<span class="string">"src/cn/xml/book.xml"</span>)));</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<p><strong>遍历</strong></p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> cn.xml;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilder;</span><br><span class="line"><span class="keyword">import</span> javax.xml.parsers.DocumentBuilderFactory;</span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Document;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Element;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.Node;</span><br><span class="line"><span class="keyword">import</span> org.w3c.dom.NodeList;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">Demo03_xml_read</span></span>{</span><br><span class="line"> <span class="comment">//使用DOM方式对XML文档进行crud(增删改查)</span></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">read1</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"></span><br><span class="line"> <span class="comment">//1.创建工厂(得到DOM解析器的工厂实例) ---这个工厂类是抽象类,so用其newInstance方法得到DOM的新实例</span></span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> <span class="comment">//2.从DOM工厂获得DOM解析器 有了这个实例才可以解析</span></span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> <span class="comment">//3.将给定URI的内容解析为一个XML文档,并且返回一个新的DOM Document对象</span></span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"> <span class="comment">//4.以后的处理都是对Document对象进行的</span></span><br><span class="line"></span><br><span class="line"> <span class="comment">//1.读取XML文档中<书名>....</书名>节点中的值</span></span><br><span class="line"> NodeList list = document.getElementsByTagName(<span class="string">"书名"</span>);<span class="comment">//按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList。 返回节点集合</span></span><br><span class="line"> Node node = list.item(<span class="number">1</span>);<span class="comment">//取第二个"书名"的节点</span></span><br><span class="line"> String s = node.getTextContent();<span class="comment">//得到节点的文本内容</span></span><br><span class="line"> System.out.println(s);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//2.遍历整个XML文档中的所有节点(标签)</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">read2</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"> <span class="comment">//得到根节点</span></span><br><span class="line"> Node root = document.getElementsByTagName(<span class="string">"书架"</span>).item(<span class="number">0</span>);<span class="comment">//得到"书架"节点(根)</span></span><br><span class="line"> <span class="comment">//得到孩子并打印</span></span><br><span class="line"> <span class="keyword">this</span>.glist(root);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">glist</span><span class="params">(Node node)</span></span>{</span><br><span class="line"> <span class="comment">//instanceof 在运行时指出对象是否是特定类的一个实例 返回布尔值</span></span><br><span class="line"> <span class="keyword">if</span>(node <span class="keyword">instanceof</span> Element){<span class="comment">//判断node是不是标签(元素) (因为xml的空格和换行符也能传进来)</span></span><br><span class="line"> System.out.println(node.getNodeName());<span class="comment">//打印节点名称</span></span><br><span class="line"> NodeList list = node.getChildNodes();<span class="comment">//得到孩子节点 返回孩子节点的集合</span></span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">int</span> i = <span class="number">0</span>; i < list.getLength(); i++) {</span><br><span class="line"> Node child = list.item(i);</span><br><span class="line"> glist(child);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">//3.得到"书名"标签中属性值</span></span><br><span class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">read3</span><span class="params">()</span> <span class="keyword">throws</span> Exception</span>{</span><br><span class="line"> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();</span><br><span class="line"> DocumentBuilder builder = factory.newDocumentBuilder();</span><br><span class="line"> Document document = builder.parse(<span class="string">"src/cn/xml/book.xml"</span>);</span><br><span class="line"></span><br><span class="line"> NodeList list = document.getElementsByTagName(<span class="string">"书名"</span>);</span><br><span class="line"> <span class="comment">//两种方法 第二个不推荐</span></span><br><span class="line"> <span class="comment">//把得到的"书名"节点强行转为标签类型</span></span><br><span class="line"> Element bookname = (Element)list.item(<span class="number">0</span>);</span><br><span class="line"> String s = bookname.getAttribute(<span class="string">"color"</span>);<span class="comment">//此方法可取得属性值</span></span><br><span class="line"><span class="comment">/* </span></span><br><span class="line"><span class="comment"> Node bookname = list.item(0);</span></span><br><span class="line"><span class="comment"> String s= bookname.getAttributes().getNamedItem("color").getNodeValue();</span></span><br><span class="line"><span class="comment">*/</span></span><br><span class="line"></span><br><span class="line"> System.out.println(s);</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure></div><script type="text/javascript" src="/js/share.js?v=0.0.1" async></script><a class="article-share-link" data-url="http://zj2626.github.io/2017/02/05/2017_jaxp/" data-id="ckm3iqts0008hfcuj64bwd0d1" data-qrcode="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMYAAADGCAAAAACs8KCBAAACJUlEQVR42u3aSY6EMBAFUe5/aVrqVW8w8TOhJZzhVanE4MfCyuk48Dp/19X/f9f6/6t7ybseWDJkyPgs41yuq0d3ric74XuTIUPGHMb6kK0djmseeSbZmwwZMmSsX88X/0AyZMiQ8dSBS4JF/hweYsqQIWMygzzuvXS39l4ZMmTMYaSNgf/8/WJ/Q4YMGR9hdBJR3qrsND7RrmTIkLE1Yx3MkdQxDdrWW68lzzJkyJjGqJXs09GKDrsYvcqQIeOzjLS4nxbX0gSVfPUgKJQhQ8Z2jNqGakEeOYiDYp8MGTLGMDrJaj8Q5M+8rBrKkCFja0YaDqab6DwfDXbIkCFjAIMfjq0WY9jODK6XIUPG1ozO6EPaWqg9IQgcZciQMYBxhIsftTwETP+XIUPGBEb/MOVlfd7+5IW/YDZNhgwZ2zH4FjmvM0B200CVIUPG1gwynkVGKDoFu85RK0OGjAmMNCh8amyCfJoAKUOGjK0ZvKSVHqycVxtglSFDxhxGZ1Si9eXC8tzNfmTIkDGAwZPYWrEsHcWIw1MZMmRszeAlMD5UwQc40utvrpQhQ8amjDNctaZjOlQRJ88yZMjYmsFXWlAjCXA6nBF3YmXIkLERoxP28bvSd8WhpwwZMgYw+kEeP9FrgZ0MGTJk8NvIEdkZC3u9kSlDhoxhjE4zgCfJiCRDhowBjFpiyUNJ3mAojnfIkCFja0Ytgewcxzz1fRgjQ4aM7zF+AJy7ddO/zStXAAAAAElFTkSuQmCC">分享</a><div class="tags"><a href="/tags/jaxp/">jaxp</a></div><div class="post-nav"><a class="pre" href="/2017/02/05/2017_JAVA_runtime/">2.Java运行时数据区</a><a class="next" href="/2017/02/05/2017_HotSpot/">3.HotSpot虚拟机 对象创建</a></div><div id="container"></div><link rel="stylesheet" href="/css/default.css?v=0.0.1"><script src="/js/gitment.browser.js?v=0.0.1"></script><script>var gitment = new Gitment({
owner: 'zj2626',
repo: 'zj2626.github.io',
oauth: {
client_id: '22769c7edffa5f05d10d',
client_secret: '7bac8fc03397cb64c178fbdfe3a01d2abb459704',
},
})
gitment.render('container')
</script></div></div></div><div class="pure-u-1 pure-u-md-1-4"><div id="sidebar"><div class="widget"><div class="search-form"><input id="local-search-input" placeholder="Search" type="text" name="q" results="0"><div id="local-search-result"></div></div></div><div class="widget"><div class="widget-title"><i class="fa fa-folder-o"> 分类</i></div><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/BUG解决/">BUG解决</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/DOM操作/">DOM操作</a><span class="category-list-count">6</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/DOM操作/XML/">XML</a><span class="category-list-count">6</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/Git/">Git</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/JDBC/">JDBC</a><span class="category-list-count">8</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/Linux/">Linux</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/java虚拟机/">java虚拟机</a><span class="category-list-count">9</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/java语言基础/">java语言基础</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/python/">python</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/多线程/">多线程</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/数据库/">数据库</a><span class="category-list-count">4</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/数据库连接池/">数据库连接池</a><span class="category-list-count">3</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/数据结构和算法/">数据结构和算法</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/机器学习/">机器学习</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/框架相关/">框架相关</a><span class="category-list-count">6</span><ul class="category-list-child"><li class="category-list-item"><a class="category-list-link" href="/categories/框架相关/前端技术/">前端技术</a><span class="category-list-count">2</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/框架相关/权限管理/">权限管理</a><span class="category-list-count">1</span></li></ul></li><li class="category-list-item"><a class="category-list-link" href="/categories/正则/">正则</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/爬虫/">爬虫</a><span class="category-list-count">4</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/程序安装与配置/">程序安装与配置</a><span class="category-list-count">1</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/计算机网络/">计算机网络</a><span class="category-list-count">1</span></li></ul></div><div class="widget"><div class="widget-title"><i class="fa fa-star-o"> 标签</i></div><div class="tagcloud"><a href="/tags/C3P0/" style="font-size: 15px;">C3P0</a> <a href="/tags/深入了解java虚拟机/" style="font-size: 15px;">深入了解java虚拟机</a> <a href="/tags/Hexo优化/" style="font-size: 15px;">Hexo优化</a> <a href="/tags/HTML/" style="font-size: 15px;">HTML</a> <a href="/tags/iframe/" style="font-size: 15px;">iframe</a> <a href="/tags/Maven/" style="font-size: 15px;">Maven</a> <a href="/tags/C语言/" style="font-size: 15px;">C语言</a> <a href="/tags/jenkins/" style="font-size: 15px;">jenkins</a> <a href="/tags/Git/" style="font-size: 15px;">Git</a> <a href="/tags/maven/" style="font-size: 15px;">maven</a> <a href="/tags/junit/" style="font-size: 15px;">junit</a> <a href="/tags/定义/" style="font-size: 15px;">定义</a> <a href="/tags/python/" style="font-size: 15px;">python</a> <a href="/tags/转码/" style="font-size: 15px;">转码</a> <a href="/tags/正则表达式/" style="font-size: 15px;">正则表达式</a> <a href="/tags/Dom4j/" style="font-size: 15px;">Dom4j</a> <a href="/tags/爬虫/" style="font-size: 15px;">爬虫</a> <a href="/tags/常用命令/" style="font-size: 15px;">常用命令</a> <a href="/tags/shell/" style="font-size: 15px;">shell</a> <a href="/tags/XPath/" style="font-size: 15px;">XPath</a> <a href="/tags/Mongodb/" style="font-size: 15px;">Mongodb</a> <a href="/tags/java/" style="font-size: 15px;">java</a> <a href="/tags/mysql/" style="font-size: 15px;">mysql</a> <a href="/tags/存储过程/" style="font-size: 15px;">存储过程</a> <a href="/tags/DBCP/" style="font-size: 15px;">DBCP</a> <a href="/tags/DRUID/" style="font-size: 15px;">DRUID</a> <a href="/tags/工具类/" style="font-size: 15px;">工具类</a> <a href="/tags/Vue/" style="font-size: 15px;">Vue</a> <a href="/tags/jaxp/" style="font-size: 15px;">jaxp</a> <a href="/tags/CRUD/" style="font-size: 15px;">CRUD</a> <a href="/tags/JDBC/" style="font-size: 15px;">JDBC</a> <a href="/tags/Blob/" style="font-size: 15px;">Blob</a> <a href="/tags/sax/" style="font-size: 15px;">sax</a> <a href="/tags/事务/" style="font-size: 15px;">事务</a> <a href="/tags/机器学习/" style="font-size: 15px;">机器学习</a> <a href="/tags/注解/" style="font-size: 15px;">注解</a> <a href="/tags/元数据/" style="font-size: 15px;">元数据</a> <a href="/tags/Hibernate/" style="font-size: 15px;">Hibernate</a> <a href="/tags/Mybatis/" style="font-size: 15px;">Mybatis</a> <a href="/tags/ThreadLocal/" style="font-size: 15px;">ThreadLocal</a> <a href="/tags/逻辑回归/" style="font-size: 15px;">逻辑回归</a> <a href="/tags/Shiro/" style="font-size: 15px;">Shiro</a></div></div><div class="widget"><div class="widget-title"><i class="fa fa-file-o"> 最近文章</i></div><ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018031301/">使用多种算法对泰坦尼克号乘客获救原因进行分析</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018031202/">关于使用sklearn进行数据预处理-归一化/标准化/正则化(转)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018031201/">scikit-learn数据预处理fit_transform()与transform()的区别(转)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/2018030701/">构建逻辑回归模型实例</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171225_regular/">正则表达式</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171222_crawler4/">Python 爬虫实战(4)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171219_python_error/">TypeError, a bytes-like object is required, not 'str'</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171219_crawler3/">Python 爬虫实战(3)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171219_crawler2/">Python 爬虫实战(2)</a></li><li class="post-list-item"><a class="post-list-link" href="/2020/01/15/20171214_crawler/">Python 爬虫实战(1)</a></li></ul></div><div class="widget"><div class="widget-title"><i class="fa fa-external-link"> 友情链接</i></div><ul></ul><a href="https://github.com/zj2626/" title="github" target="_blank">github</a></div></div></div><div class="pure-u-1 pure-u-md-3-4"><div id="footer">Copyright © 2021 <a href="/." rel="nofollow">ZJ_BLOG.</a> Powered by<a rel="nofollow" target="_blank" href="https://hexo.io"> Hexo.</a><a rel="nofollow" target="_blank" href="https://github.com/tufu9441/maupassant-hexo"> Theme</a> by<a rel="nofollow" target="_blank" href="https://github.com/pagecho"> Cho.</a></div></div></div><a class="show" id="rocket" href="#top"></a><script type="text/javascript" src="/js/totop.js?v=0.0.1" async></script><script type="text/javascript" src="//cdn.bootcss.com/fancybox/3.2.5/jquery.fancybox.min.js" async></script><script type="text/javascript" src="/js/fancybox.js?v=0.0.1" async></script><link rel="stylesheet" type="text/css" href="//cdn.bootcss.com/fancybox/3.2.5/jquery.fancybox.min.css"><script type="text/javascript" src="/js/search.js?v=0.0.1"></script><script>var search_path = 'search.xml';
if (search_path.length == 0) {
search_path = 'search.xml';
}
var path = '/' + search_path;
searchFunc(path, 'local-search-input', 'local-search-result');
</script><script>var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = '//hm.baidu.com/hm.js?' + 'c9a692191e9aca9e30daa3f6326cc789';
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script type="text/javascript" src="/js/codeblock-resizer.js?v=0.0.1"></script><script type="text/javascript" src="/js/smartresize.js?v=0.0.1"></script></div></body></html>