<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle Berkeley DB 中国研发团队的博客 &#187; 蔡瀛</title>
	<atom:link href="http://www.bdbchina.com/tag/%e8%94%a1%e7%80%9b/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bdbchina.com</link>
	<description>Oracle Berkeley DB 中国研发团队的博客</description>
	<lastBuildDate>Thu, 15 Dec 2011 10:35:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Berkeley DB XML 多线程添加文档例子</title>
		<link>http://www.bdbchina.com/2010/03/berkeley-db-xml-%e5%a4%9a%e7%ba%bf%e7%a8%8b%e6%b7%bb%e5%8a%a0%e6%96%87%e6%a1%a3%e4%be%8b%e5%ad%90/</link>
		<comments>http://www.bdbchina.com/2010/03/berkeley-db-xml-%e5%a4%9a%e7%ba%bf%e7%a8%8b%e6%b7%bb%e5%8a%a0%e6%96%87%e6%a1%a3%e4%be%8b%e5%ad%90/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 06:56:02 +0000</pubDate>
		<dc:creator>蔡瀛</dc:creator>
				<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[Ying Cai]]></category>
		<category><![CDATA[蔡瀛]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=809</guid>
		<description><![CDATA[
import java.io.File;
import java.util.concurrent.CountDownLatch;

import com.sleepycat.db.Environment;
import com.sleepycat.db.EnvironmentConfig;
import com.sleepycat.db.LockDetectMode;
import com.sleepycat.dbxml.XmlContainer;
import com.sleepycat.dbxml.XmlContainerConfig;
import com.sleepycat.dbxml.XmlDocument;
import com.sleepycat.dbxml.XmlDocumentConfig;
import com.sleepycat.dbxml.XmlException;
import com.sleepycat.dbxml.XmlManager;
import com.sleepycat.dbxml.XmlManagerConfig;
import com.sleepycat.dbxml.XmlQueryContext;
import com.sleepycat.dbxml.XmlResults;
import com.sleepycat.dbxml.XmlTransaction;
import com.sleepycat.dbxml.XmlUpdateContext;

public class DbxmlThreads extends Thread {

        public static XmlManager mgr = null;
        public static String containerName = "test.dbxml";
        [...]]]></description>
			<content:encoded><![CDATA[<pre name="code" class="java:nogutter">
import java.io.File;
import java.util.concurrent.CountDownLatch;

import com.sleepycat.db.Environment;
import com.sleepycat.db.EnvironmentConfig;
import com.sleepycat.db.LockDetectMode;
import com.sleepycat.dbxml.XmlContainer;
import com.sleepycat.dbxml.XmlContainerConfig;
import com.sleepycat.dbxml.XmlDocument;
import com.sleepycat.dbxml.XmlDocumentConfig;
import com.sleepycat.dbxml.XmlException;
import com.sleepycat.dbxml.XmlManager;
import com.sleepycat.dbxml.XmlManagerConfig;
import com.sleepycat.dbxml.XmlQueryContext;
import com.sleepycat.dbxml.XmlResults;
import com.sleepycat.dbxml.XmlTransaction;
import com.sleepycat.dbxml.XmlUpdateContext;

public class DbxmlThreads extends Thread {

        public static XmlManager mgr = null;
        public static String containerName = "test.dbxml";
        public static Environment dbEnv = null;
        private static XmlContainer cont = null;

        static {
                EnvironmentConfig envConf = new EnvironmentConfig();
                envConf.setThreaded(true);
                envConf.setAllowCreate(true);
                envConf.setTransactional(true);
                envConf.setInitializeCache(true);
                envConf.setInitializeLocking(true);
                envConf.setInitializeLogging(true);
                envConf.setCacheSize(64 * 1024 * 1024);
                envConf.setLockDetectMode(LockDetectMode.DEFAULT);

                XmlManagerConfig xmlMgrConfig = new XmlManagerConfig();
                xmlMgrConfig.setAdoptEnvironment(true);

                File dbHome = new File(".");

                try {
                        dbEnv = new Environment(dbHome, envConf);
                        mgr = new XmlManager(dbEnv, xmlMgrConfig);

                        // 创建XmlContainer
                        if(mgr.existsContainer(containerName)!=0)
                                mgr.removeContainer(containerName);

                        XmlContainerConfig containerConf = new XmlContainerConfig();
                        containerConf.setTransactional(true);
                        containerConf.setAllowCreate(true);
                        containerConf.setContainerType(XmlContainer.NodeContainer);
                        cont = mgr.openContainer(containerName, containerConf);
                        cont.setAutoIndexing(false);
                } catch (Exception e) {
                        e.printStackTrace();
                }

        }

        private String name;
        private CountDownLatch doneSignal;

        DbxmlThreads(String name, CountDownLatch doneSignal) {
                this.name = name;
                this.doneSignal = doneSignal;
        }

        public void run() {
                XmlTransaction txn = null;
                try {
                        String content = "<"+name+">I am "+name+"</"+name+">";
                        for (int i = 0; i < 100; i++) {
                                XmlDocumentConfig dc = new XmlDocumentConfig();
                                dc.setGenerateName(true);
                                System.out.println(name+" insert "+i);
                                txn = mgr.createTransaction();

                                XmlDocument doc = mgr.createDocument();
                                doc.setContent(content);
                                cont.putDocument(txn, doc, dc);

                                txn.commit();
                        }
                } catch (XmlException e) {
                        System.out.println("insert error:" + e.getMessage());
                } finally {
                        doneSignal.countDown();
                }
        }

        public static void main(String[] args) throws Exception {

                CountDownLatch doneSignal = new CountDownLatch(5);
                DbxmlThreads threadA = new DbxmlThreads("A", doneSignal);
                DbxmlThreads threadB = new DbxmlThreads("B", doneSignal);
                DbxmlThreads threadC = new DbxmlThreads("C", doneSignal);
                DbxmlThreads threadD = new DbxmlThreads("D", doneSignal);
                DbxmlThreads threadE = new DbxmlThreads("E", doneSignal);

                threadA.start();
                threadB.start();
                threadC.start();
                threadD.start();
                threadE.start();

                doneSignal.await();

                XmlQueryContext qc = mgr.createQueryContext();
                String query = "collection('"+containerName+"')/A";
                XmlResults res = mgr.query(query, qc);
                System.out.println("The results size is: "+res.size());
                res.delete();
                cont.close();
                mgr.close();
        }

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2010/03/berkeley-db-xml-%e5%a4%9a%e7%ba%bf%e7%a8%8b%e6%b7%bb%e5%8a%a0%e6%96%87%e6%a1%a3%e4%be%8b%e5%ad%90/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Berkeley DB Xml 入门系列之二： 在Linux下编译和使用Berkeley DB Xml</title>
		<link>http://www.bdbchina.com/2009/07/berkeley-db-xml-complie-on-linux/</link>
		<comments>http://www.bdbchina.com/2009/07/berkeley-db-xml-complie-on-linux/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 10:31:50 +0000</pubDate>
		<dc:creator>蔡瀛</dc:creator>
				<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[dbxml]]></category>
		<category><![CDATA[蔡瀛]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=379</guid>
		<description><![CDATA[在前面的文章《Berkeley DB Xml 入门系列之一： 简介与”query”示例程序详解》我们已经知道了Berkeley DB Xml程序的一些基本流程和概念。在文章《使用Visual C++ 2008 Express Edition 编译Oracle Berkeley DB XML》介绍了如何使用Visual Studio 在Windows平台上编译Berkeley DB Xml，本文将介绍在Linux或者类Unix的操作系统上如何编译和使用Berkeley DB Xml。

下载
可以在这个地址http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html下载最新的Berkeley DB Xml的 安装包，Linux下使用可以下载.tar.gz 或者.zip结尾的包。目前的最新版本是2.4.16， .tar.gz结尾的包的大小约为36M。我们下载.tar.gz 结尾的包作为本文的示例。
下载完后得到是这样一个文件
ying@bdbcn3:~t$ ls
dbxml-2.4.16.tar.gz
编译
解压缩
ying@bdbcn3:~$ tar zxvf dbxml-2.4.16.tar.gz
进入dbxml-2.4.16目录后可以看见有一个buildall.sh的脚本, 这个脚本就是用来编译dbxml的。可以使用&#8211;help选项查看编译选项。一些主要选项有：用 -x 指定c++ 编译器， -c指定 c编译器，要注意的是Berkeley DB Xml需要使用gnu的make程序进行编译，可以用-m 指定make程序。 我们在linux下编译的话这些选项基本不需要指定，默认即可。
ying@bdbcn3:~/dbxml-2.4.16$ ./buildall.sh &#8211;help
Usage: ./buildall.sh [options]
&#8211;help                                 print this help message
-p &#60;platform&#62;                         platform type as understood by
runConfigure [...]]]></description>
			<content:encoded><![CDATA[<p>在前面的文章<a title="《Berkeley DB Xml 入门系列之一： 简介与”query”示例程序详解》" href="http://www.bdbchina.com/2009/07/berkeley-db-xml-入门系列之一：-简介与query示例程序详解/" target="_blank">《Berkeley DB Xml 入门系列之一： 简介与”query”示例程序详解》</a>我们已经知道了Berkeley DB Xml程序的一些基本流程和概念。在文章<a href="http://www.bdbchina.com/2009/04/%E4%BD%BF%E7%94%A8visual-c-2008-express-edition-%E7%BC%96%E8%AF%91oracle-berkeley-db-xml/" target="_blank">《使用Visual C++ 2008 Express Edition 编译Oracle Berkeley DB XML》</a>介绍了如何使用Visual Studio 在Windows平台上编译Berkeley DB Xml，本文将介绍在Linux或者类Unix的操作系统上如何编译和使用Berkeley DB Xml。</p>
<p><span id="more-379"></span></p>
<h3>下载</h3>
<p>可以在这个地址http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html下载最新的Berkeley DB Xml的 安装包，Linux下使用可以下载.tar.gz 或者.zip结尾的包。目前的最新版本是2.4.16， .tar.gz结尾的包的大小约为36M。我们下载.tar.gz 结尾的包作为本文的示例。</p>
<p>下载完后得到是这样一个文件</p>
<blockquote><p>ying@bdbcn3:~t$ ls<br />
dbxml-2.4.16.tar.gz</p></blockquote>
<h3>编译</h3>
<p>解压缩</p>
<blockquote><p>ying@bdbcn3:~$ tar zxvf dbxml-2.4.16.tar.gz</p></blockquote>
<p>进入dbxml-2.4.16目录后可以看见有一个buildall.sh的脚本, 这个脚本就是用来编译dbxml的。可以使用&#8211;help选项查看编译选项。一些主要选项有：用 -x 指定c++ 编译器， -c指定 c编译器，要注意的是Berkeley DB Xml需要使用gnu的make程序进行编译，可以用-m 指定make程序。 我们在linux下编译的话这些选项基本不需要指定，默认即可。</p>
<blockquote><p>ying@bdbcn3:~/dbxml-2.4.16$ ./buildall.sh &#8211;help<br />
Usage: ./buildall.sh [options]<br />
&#8211;help                                 print this help message<br />
-p &lt;platform&gt;                         platform type as understood by<br />
runConfigure in Xerces-C++ [guessed]<br />
-c &lt;C compiler name&gt;                 [gcc]<br />
-x &lt;C++ compiler name&gt;               [g++]<br />
-m &lt;make command&gt;                  [make]<br />
-b &lt;bits to build: 32 or 64&gt;           [32]<br />
&#8211;no-configure:                       do not re-run configure steps.  Assumes<br />
configuration has been run previously<br />
&#8211;clean:                               perform &#8216;make clean&#8217; on all libraries<br />
&#8230;.</p></blockquote>
<p>在运行buildall.sh的时候如果不指定安装目录，则所有编译产生的库文件和头文件就会安装在主目录的install目录下。如果指定了安装目录， 请确保对目录有写权限。我们把&#8211;enable-java的选项打开，编译java库。</p>
<blockquote><p>ying@bdbcn3:~/dbxml-2.4.16$ ./buildall.sh &#8211;enable-java</p></blockquote>
<p>接着等待编译过程，一般酷睿2的机器十几分钟就编译完了。查看安装目录</p>
<blockquote><p>ying@bdbcn3:~t/dbxml-2.4.16$ cd install/<br />
ying@bdbcn3:~/dbxml-2.4.16/install$ ls<br />
bin  docs  include  lib</p></blockquote>
<p>我们所需要的库就安装在lib目录下，头文件在include目录下，docs目录下是文档，bin目录下放了一些Berkeley DB 和 Berkeley DB Xml的工具。</p>
<h3>编译C++ hello world程序</h3>
<p>我们可以编译dbxml/examples/cxx/basic/helloWorld.cpp示例程序，看我们编译的库是否正确。在用编译的时候需要指定-I 和-L选项</p>
<blockquote><p>ying@bdbcn3:~/dbxml-2.4.16$g++ helloWorld.cpp -I /home/ying/dbxml-2.4.16/install/include/ -L /home/ying/dbxml-2.4.16/install/lib/ -ldbxml -ldb_cxx -lxqilla -lxerces-c -o helloWorld</p></blockquote>
<p>运行的时候需要把库的位置加入到环境变量中</p>
<blockquote><p>ying@bdbcn3:~/dbxml-2.4.16$ export LD_LIBRARY_PATH=/home/ying/dbxml-2.4.16/install/lib/<br />
ying@bdbcn3:~/dbxml-2.4.16$ ./helloWorld<br />
Document name: doc<br />
Content: &lt;hello&gt;Hello World&lt;/hello&gt;<br />
ying@bdbcn3:~/dbxml-2.4.16$</p></blockquote>
<h3>在一些linux发行版中直接安装</h3>
<p>一些Linux发行版对Berkeley DB Xml已经进行了打包，可以直接安装使用非常方便。可以参考如下命令：</p>
<p>Feodra: sudo yum install dbxml<br />
Gentoo: sudo emerge dbxml</p>
<h3>总结</h3>
<p>使用buildall.sh脚本来编译Berkeley db xml方便快捷，如果读者在linux或unix系统下编译有什么问题欢迎和我交流。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/07/berkeley-db-xml-complie-on-linux/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Berkeley DB Xml 入门系列之一： 简介与&#8221;query&#8221;示例程序详解</title>
		<link>http://www.bdbchina.com/2009/07/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%80%ef%bc%9a-%e7%ae%80%e4%bb%8b%e4%b8%8equery%e7%a4%ba%e4%be%8b%e7%a8%8b%e5%ba%8f%e8%af%a6%e8%a7%a3/</link>
		<comments>http://www.bdbchina.com/2009/07/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%80%ef%bc%9a-%e7%ae%80%e4%bb%8b%e4%b8%8equery%e7%a4%ba%e4%be%8b%e7%a8%8b%e5%ba%8f%e8%af%a6%e8%a7%a3/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 08:40:22 +0000</pubDate>
		<dc:creator>蔡瀛</dc:creator>
				<category><![CDATA[Berkeley DB XML]]></category>
		<category><![CDATA[dbxml]]></category>
		<category><![CDATA[蔡瀛]]></category>

		<guid isPermaLink="false">http://www.bdbchina.com/?p=374</guid>
		<description><![CDATA[Oracle Berkeley DB XML 是一个可嵌入的开源 XML 数据库(Embedded Native Xml Database)，可基于 XQuery 访问存储在容器中的文档，并对其内容进行索引。Oracle Berkeley DB XML 构建于 Oracle Berkeley DB 之上，并继承了其丰富的特性和属性(包括 环境，各个级别的事务，Replication等)。与Oracle Berkeley DB 一样，它通过应用程序运 行，无需人为管理。Oracle Berkeley DB XML 主要功能模块包括有文档分析器、XML索引 器以及 XQuery 引擎，实现了最快速、最高效的Xml数据检索。
本文是Berkeley DB Xml入门系列文章的第一篇，此系列将会详细介绍Berkeley DB Xml的 使用和编程，并探讨一些Berkeley DB Xml 编程中的高级内容，欢迎大家关注。在这篇文章里面我们通过一个最简单查询例子，介绍最基本Berkeley DB Xml的编程流程，并介绍 Berkeley DB Xml 中的一些基本概念。
本示例程序(example/cxx/basic/query.cpp)使用C++编写，相应的Java版本可在安装包的example/java/basic目录下找到。
/*
*
*******
*
* 这是一个最简单的Berkeley DB Xml程序，描述了如何进行查询和结果处理
*
* 这个程序展示了以下几个方面内容:
*  初始化Berkeley DB Xml
*  创建XmlContainer
*  插入Xml文档
*  [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle Berkeley DB XML 是一个可嵌入的开源 XML 数据库(Embedded Native Xml Database)，可基于 XQuery 访问存储在容器中的文档，并对其内容进行索引。Oracle Berkeley DB XML 构建于 Oracle Berkeley DB 之上，并继承了其丰富的特性和属性(包括 环境，各个级别的事务，Replication等)。与Oracle Berkeley DB 一样，它通过应用程序运 行，无需人为管理。Oracle Berkeley DB XML 主要功能模块包括有文档分析器、XML索引 器以及 XQuery 引擎，实现了最快速、最高效的Xml数据检索。</p>
<p>本文是Berkeley DB Xml入门系列文章的第一篇，此系列将会详细介绍Berkeley DB Xml的 使用和编程，并探讨一些Berkeley DB Xml 编程中的高级内容，欢迎大家关注。在这篇文章里面我们通过一个最简单查询例子，介绍最基本Berkeley DB Xml的编程流程，并介绍 Berkeley DB Xml 中的一些基本概念。<span id="more-374"></span></p>
<p>本示例程序(example/cxx/basic/query.cpp)使用C++编写，相应的Java版本可在安装包的example/java/basic目录下找到。</p>
<pre name="code" class="cpp:nogutter">/*
*
*******
*
* 这是一个最简单的Berkeley DB Xml程序，描述了如何进行查询和结果处理
*
* 这个程序展示了以下几个方面内容:
*  初始化Berkeley DB Xml
*  创建XmlContainer
*  插入Xml文档
*  创建XQuery查询和执行查询
*  在查询中如何使用变量
*  结果处理
*
*
*/

#include &lt;iostream&gt;
#include &lt;dbxml/DbXml.hpp&gt;

using namespace DbXml;

int
main(int argc, char **argv)
{
    // 定义XmlContainer的文件名
    std::string containerName = "people.dbxml";
    // 定义Xml文档内容
    std::string content = "&lt;people&gt;&lt;person&gt;&lt;name&gt;joe&lt;/name&gt;&lt;/person&gt;&lt;person&gt;&lt;name&gt;mary&lt;/name&gt;&lt;/person&gt;&lt;/people&gt;";
    // 定义Xml文档名字，每个存储于XmlContainer中的Xml文档必须有唯一的名字
    std::string docName = "people";

    // 定义XQuery查询语句，用来查询姓名等于某个值的person结点, 注意$name是一
    // 个XQuery变量，可以赋值
    std::string queryString =
        "collection('people.dbxml')/people/person[name=$name]";

    try {

        // 所有的BDB XML程序都需要一个XmlManager对象，XmlManager用于管
        // 理BDB XML的各种对象资源
        XmlManager mgr;

        // 检查同名Xml容器是否已经存在了，存在的话就删除
        if (mgr.existsContainer(containerName))
            mgr.removeContainer(containerName);

        // 用XmlManager创建一个XmlContainer. Berkeley DB Xml把所有的Xml
        // 数据，索引以及其他相关内容存储在XmlContainer中，XmlContainer
        // 在磁盘上的表现就是一个.dbxml结尾的文件，当然也可以以其他后缀
        // 作为文件名结尾。我们也可以使用已经创建好的XmlContainer。
        XmlContainer cont = mgr.createContainer(containerName);

        // 修改container需要创建一个XmlUpdateContext对象
        XmlUpdateContext uc = mgr.createUpdateContext();
        // 插入一个Xml文档，提供文档名文档内容，和一个XmlUpdateContext对象
        // 插入后Xml文档就会以Berkeley DB Xml的格式存储于XmlContainer中
        cont.putDocument(docName, content, uc);

        // 如果是查询则需要创建一个XmlQueryContext对象
        XmlQueryContext qc = mgr.createQueryContext();

        // 可以在XmlQueryContext对象中设置需要查询的变量值
        qc.setVariableValue("name", "mary");

        // 接着创建一个XmlQueryExpression对象，用来进行查询，用前面创
        // 建的XmlQueryContext对象做为参数
        XmlQueryExpression expr = mgr.prepare(queryString, qc);
        // 执行查询，返回XmlResults对象
        XmlResults res = expr.execute(qc);

        // 可以通过XmlQueryExpression::getQuery()方法获得XQuery查询语句
        // 通过XmlResults::size()方法可以知道查询的结果集大小
        std::cout &lt;&lt; "The query, '" &lt;&lt; expr.getQuery() &lt;&lt; "' returned " &lt;&lt;
            (unsigned int) res.size() &lt;&lt; " result(s)" &lt;&lt; std::endl;

        // 处理返回的XmlResults对象， 输出他们的值
        XmlValue value;
        std::cout &lt;&lt; "Result: " &lt;&lt; std::endl;
        while (res.next(value)) {
            std::cout &lt;&lt; "t" &lt;&lt; value.asString() &lt;&lt; std::endl;
        }

        //异常处理， Berkeley DB Xml的所有对象如果发生异常会抛出XmlException
        } catch (XmlException &amp;xe) {
            std::cout &lt;&lt; "XmlException: " &lt;&lt; xe.what() &lt;&lt; std::endl;
    }
    return 0;
}</pre>
<p>本程序的运行结果是：</p>
<pre>[ying@ying build_unix]$ ./query
The query, 'collection('people.dbxml')/people/person[name=$name]' returned 1 result(s)
Result:
&lt;person&gt;&lt;name&gt;mary&lt;/name&gt;&lt;/person&gt;</pre>
<h3>总结</h3>
<p>通过这个示例程序我们可以知道，Berkeley DB Xml的程序一般有一下几个步骤，创建XmlManager；创建或打开XmlContainer；创建XmlQueryExpression并执行查询；处理查询结果。读者可以尝试修改setc.setVariableValue(&#8220;name&#8221;, &#8220;mary&#8221;)这一句，看查询 结果是否有变化。更高级的Berkeley DB Xml程序可添加事务，环境(Berkeley DB 的Environment)等等功能, 读者可以关注本博客后续文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bdbchina.com/2009/07/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%80%ef%bc%9a-%e7%ae%80%e4%bb%8b%e4%b8%8equery%e7%a4%ba%e4%be%8b%e7%a8%8b%e5%ba%8f%e8%af%a6%e8%a7%a3/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>
Դ
