<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>评论：Berkeley DB Xml 入门系列之三： 使用Berkeley DB Xml Shell</title>
	<atom:link href="http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/</link>
	<description>Oracle Berkeley DB 中国研发团队的博客</description>
	<lastBuildDate>Thu, 15 Dec 2011 10:53:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>来自：蔡瀛</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-1378</link>
		<dc:creator>蔡瀛</dc:creator>
		<pubDate>Fri, 03 Sep 2010 05:08:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-1378</guid>
		<description>DB XML 支持XQuery中的内建max函数， 具体请参考：
&lt;a href=&quot;http://www.w3.org/TR/xpath-functions/#func-max&quot; rel=&quot;nofollow&quot;&gt;http://www.w3.org/TR/xpath-functions/#func-max&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>DB XML 支持XQuery中的内建max函数， 具体请参考：<br />
<a href="http://www.w3.org/TR/xpath-functions/#func-max" rel="nofollow">http://www.w3.org/TR/xpath-functions/#func-max</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：czijian</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-1368</link>
		<dc:creator>czijian</dc:creator>
		<pubDate>Wed, 01 Sep 2010 09:54:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-1368</guid>
		<description>我最近在看dbxml，发现查询过程中没有找到类似MAX，MIN这样的语法，如果我想要查找一个某个包含最小值的项，只能使用类似下面的order，再获取第一条？
std::string query = &quot;for $item in collection(&#039;&quot; + container.getName() + &quot;&#039;)/fruits:item &quot;
        &quot;for $inventory in $item/inventory/inventory &quot;
        &quot;order by $inventory &quot;
        &quot;return $item&quot;;

我在xquery下的grammer.cpp也没有找到类似的语法，那么dbxml到底能不能支持这样的操作？</description>
		<content:encoded><![CDATA[<p>我最近在看dbxml，发现查询过程中没有找到类似MAX，MIN这样的语法，如果我想要查找一个某个包含最小值的项，只能使用类似下面的order，再获取第一条？<br />
std::string query = &#8220;for $item in collection(&#8216;&#8221; + container.getName() + &#8220;&#8216;)/fruits:item &#8221;<br />
        &#8220;for $inventory in $item/inventory/inventory &#8221;<br />
        &#8220;order by $inventory &#8221;<br />
        &#8220;return $item&#8221;;</p>
<p>我在xquery下的grammer.cpp也没有找到类似的语法，那么dbxml到底能不能支持这样的操作？</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：蔡瀛</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-1048</link>
		<dc:creator>蔡瀛</dc:creator>
		<pubDate>Thu, 13 May 2010 09:31:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-1048</guid>
		<description>&lt;a href=&quot;#comment-1031&quot; rel=&quot;nofollow&quot;&gt;@jianghua &lt;/a&gt;
请查看《Getting Started with Berkeley DB XML》queryplan 那一小节</description>
		<content:encoded><![CDATA[<p><a href="#comment-1031" rel="nofollow">@jianghua </a><br />
请查看《Getting Started with Berkeley DB XML》queryplan 那一小节</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：jianghua</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-1032</link>
		<dc:creator>jianghua</dc:creator>
		<pubDate>Tue, 11 May 2010 08:33:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-1032</guid>
		<description>您好：
    还有一个问题，在Shell命令下输入命令qplan然后接一个QXuery查询，显示出来的是什么？谢谢</description>
		<content:encoded><![CDATA[<p>您好：<br />
    还有一个问题，在Shell命令下输入命令qplan然后接一个QXuery查询，显示出来的是什么？谢谢</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：jianghua</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-1031</link>
		<dc:creator>jianghua</dc:creator>
		<pubDate>Tue, 11 May 2010 08:09:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-1031</guid>
		<description>您好：
    我想问问有没有关于介绍Berkeley DB XML中对于XQuery是如何优化和执行方面的资料。谢谢</description>
		<content:encoded><![CDATA[<p>您好：<br />
    我想问问有没有关于介绍Berkeley DB XML中对于XQuery是如何优化和执行方面的资料。谢谢</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：天门冬</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-695</link>
		<dc:creator>天门冬</dc:creator>
		<pubDate>Thu, 25 Feb 2010 02:44:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-695</guid>
		<description>Hi，你好。我写了一个多线程的例子来添加文档(通过DBXML.getInstance().insertXMLData(key);)。报出如下错误。单线程访问不会有问题，不知是哪里有问题？
异常：
com.sleepycat.dbxml.XmlException: Error: DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock, errcode = DATABASE_ERROR
        at com.sleepycat.dbxml.dbxml_javaJNI.XmlContainer_putDocument__SWIG_7(Native Method)
        at com.sleepycat.dbxml.XmlContainer.putDocument(XmlContainer.java:917)
        at com.sleepycat.dbxml.XmlContainer.putDocument(XmlContainer.java:173)
        at com.wondersgroup.dbxml.DBXML.insertXMLData(DBXML.java:119)
        at com.wondersgroup.dbxml.InsertXmlData.run(InsertXmlData.java:46)
2010-2-25 10:28:12 com.wondersgroup.dbxml.InsertXmlData run
代码片段：
public class DBXML {
    private static DBXML dbxml = null;
    private Environment environment;
    private XmlManager xmlManager;
    private XmlContainer xmlContainer;
    private DBXML() {
        setEnvironment();
        setXmlManager();
        setXmlContainer();
    }
    public static synchronized DBXML getInstance() {
        if (dbxml == null) {
            dbxml = new DBXML();
        }
        return dbxml;
    }
    public void setEnvironment() {
        System.out.println(&quot;setEnvironment......&quot;);
        File file = new File(&quot;E:\\testing\\data&quot;);
 EnvironmentConfig envConf = new EnvironmentConfig();
 envConf.setAllowCreate(true);         // If the environment does not
        envConf.setInitializeCache(true);     // Turn on the shared memory
        envConf.setInitializeLocking(true);   // Turn on the locking subsystem.
        envConf.setInitializeLogging(true);   // Turn on the logging subsystem.
        envConf.setTransactional(true);
        envConf.setLogInMemory(true);
        envConf.setLogBufferSize(30*1024*1024);
        envConf.setCacheSize(50*1024*1024);
        envConf.setLockDetectMode(LockDetectMode.DEFAULT);
        try {
            environment = new Environment(file, envConf);
        } catch (DatabaseException ex) {
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    private void setXmlManager() {
        System.out.println(&quot;setXmlManager......&quot;);
        XmlManagerConfig managerConfig = new XmlManagerConfig();
        managerConfig.setAdoptEnvironment(true);
        managerConfig.setAllowAutoOpen(true);
        managerConfig.setAllowExternalAccess(true);
        try {
            xmlManager = new XmlManager(environment, managerConfig);
        } catch (XmlException ex) {
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    private void setXmlContainer() {
        System.out.println(&quot;setXmlContainer......&quot;);
        XmlContainerConfig xmlContainerConfig = new XmlContainerConfig();
        xmlContainerConfig.setTransactional(true);
        xmlContainerConfig.setAllowCreate(true);
        xmlContainerConfig.setNodeContainer(true);
        xmlContainerConfig.setIndexNodes(true);
        try {
            if (xmlManager.existsContainer(&quot;InstartXmlData.dbxml&quot;) == 0) {
                xmlContainer = xmlManager.createContainer(&quot;InstartXmlData.dbxml&quot;, xmlContainerConfig);
            } else {
                xmlContainer = xmlManager.openContainer(&quot;InstartXmlData.dbxml&quot;, xmlContainerConfig);
            }
        } catch (XmlException ex) {
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void insertXMLData(String key) {
        XmlTransaction xt = null;
        try {
            xt = xmlManager.createTransaction();
            XmlUpdateContext updateContext = xmlManager.createUpdateContext();
            XmlInputStream theStream = xmlManager.createInputStream(new FileInputStream(&quot;E:\\testing\\source\\cdmdetails171.xml&quot;));
            xmlContainer.putDocument(xt, key, theStream, updateContext, null);
            theStream.delete();
            xt.commit();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);
        } catch (XmlException ex) {
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);
            if (xt != null) {
                try {
                    xt.abort();
                } catch (XmlException ex1) {
                    Logger.getLogger(InsertXmlData.class.getName()).log(Level.SEVERE, null, ex1);
                }
            }
        }
    }
    public void cleanup() {
        try {
            if (xmlContainer != null) {
                xmlContainer.close();
            }
            if (xmlManager != null) {
                xmlManager.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}</description>
		<content:encoded><![CDATA[<p>Hi，你好。我写了一个多线程的例子来添加文档(通过DBXML.getInstance().insertXMLData(key);)。报出如下错误。单线程访问不会有问题，不知是哪里有问题？<br />
异常：<br />
com.sleepycat.dbxml.XmlException: Error: DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock, errcode = DATABASE_ERROR<br />
        at com.sleepycat.dbxml.dbxml_javaJNI.XmlContainer_putDocument__SWIG_7(Native Method)<br />
        at com.sleepycat.dbxml.XmlContainer.putDocument(XmlContainer.java:917)<br />
        at com.sleepycat.dbxml.XmlContainer.putDocument(XmlContainer.java:173)<br />
        at com.wondersgroup.dbxml.DBXML.insertXMLData(DBXML.java:119)<br />
        at com.wondersgroup.dbxml.InsertXmlData.run(InsertXmlData.java:46)<br />
2010-2-25 10:28:12 com.wondersgroup.dbxml.InsertXmlData run<br />
代码片段：<br />
public class DBXML {<br />
    private static DBXML dbxml = null;<br />
    private Environment environment;<br />
    private XmlManager xmlManager;<br />
    private XmlContainer xmlContainer;<br />
    private DBXML() {<br />
        setEnvironment();<br />
        setXmlManager();<br />
        setXmlContainer();<br />
    }<br />
    public static synchronized DBXML getInstance() {<br />
        if (dbxml == null) {<br />
            dbxml = new DBXML();<br />
        }<br />
        return dbxml;<br />
    }<br />
    public void setEnvironment() {<br />
        System.out.println(&#8220;setEnvironment&#8230;&#8230;&#8221;);<br />
        File file = new File(&#8220;E:\\testing\\data&#8221;);<br />
 EnvironmentConfig envConf = new EnvironmentConfig();<br />
 envConf.setAllowCreate(true);         // If the environment does not<br />
        envConf.setInitializeCache(true);     // Turn on the shared memory<br />
        envConf.setInitializeLocking(true);   // Turn on the locking subsystem.<br />
        envConf.setInitializeLogging(true);   // Turn on the logging subsystem.<br />
        envConf.setTransactional(true);<br />
        envConf.setLogInMemory(true);<br />
        envConf.setLogBufferSize(30*1024*1024);<br />
        envConf.setCacheSize(50*1024*1024);<br />
        envConf.setLockDetectMode(LockDetectMode.DEFAULT);<br />
        try {<br />
            environment = new Environment(file, envConf);<br />
        } catch (DatabaseException ex) {<br />
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);<br />
        } catch (FileNotFoundException ex) {<br />
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);<br />
        }<br />
    }<br />
    private void setXmlManager() {<br />
        System.out.println(&#8220;setXmlManager&#8230;&#8230;&#8221;);<br />
        XmlManagerConfig managerConfig = new XmlManagerConfig();<br />
        managerConfig.setAdoptEnvironment(true);<br />
        managerConfig.setAllowAutoOpen(true);<br />
        managerConfig.setAllowExternalAccess(true);<br />
        try {<br />
            xmlManager = new XmlManager(environment, managerConfig);<br />
        } catch (XmlException ex) {<br />
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);<br />
        }<br />
    }<br />
    private void setXmlContainer() {<br />
        System.out.println(&#8220;setXmlContainer&#8230;&#8230;&#8221;);<br />
        XmlContainerConfig xmlContainerConfig = new XmlContainerConfig();<br />
        xmlContainerConfig.setTransactional(true);<br />
        xmlContainerConfig.setAllowCreate(true);<br />
        xmlContainerConfig.setNodeContainer(true);<br />
        xmlContainerConfig.setIndexNodes(true);<br />
        try {<br />
            if (xmlManager.existsContainer(&#8220;InstartXmlData.dbxml&#8221;) == 0) {<br />
                xmlContainer = xmlManager.createContainer(&#8220;InstartXmlData.dbxml&#8221;, xmlContainerConfig);<br />
            } else {<br />
                xmlContainer = xmlManager.openContainer(&#8220;InstartXmlData.dbxml&#8221;, xmlContainerConfig);<br />
            }<br />
        } catch (XmlException ex) {<br />
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);<br />
        }<br />
    }<br />
    public void insertXMLData(String key) {<br />
        XmlTransaction xt = null;<br />
        try {<br />
            xt = xmlManager.createTransaction();<br />
            XmlUpdateContext updateContext = xmlManager.createUpdateContext();<br />
            XmlInputStream theStream = xmlManager.createInputStream(new FileInputStream(&#8220;E:\\testing\\source\\cdmdetails171.xml&#8221;));<br />
            xmlContainer.putDocument(xt, key, theStream, updateContext, null);<br />
            theStream.delete();<br />
            xt.commit();<br />
        } catch (FileNotFoundException ex) {<br />
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);<br />
        } catch (XmlException ex) {<br />
            Logger.getLogger(DBXML.class.getName()).log(Level.SEVERE, null, ex);<br />
            if (xt != null) {<br />
                try {<br />
                    xt.abort();<br />
                } catch (XmlException ex1) {<br />
                    Logger.getLogger(InsertXmlData.class.getName()).log(Level.SEVERE, null, ex1);<br />
                }<br />
            }<br />
        }<br />
    }<br />
    public void cleanup() {<br />
        try {<br />
            if (xmlContainer != null) {<br />
                xmlContainer.close();<br />
            }<br />
            if (xmlManager != null) {<br />
                xmlManager.close();<br />
            }<br />
        } catch (Exception ex) {<br />
            ex.printStackTrace();<br />
        }<br />
    }<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：ecli</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-687</link>
		<dc:creator>ecli</dc:creator>
		<pubDate>Mon, 22 Feb 2010 10:35:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-687</guid>
		<description>&lt;a href=&quot;#comment-686&quot; rel=&quot;nofollow&quot;&gt;@蔡瀛 &lt;/a&gt; 
按照你的建议把源代码文件保存成utf8格式编译。保存和查询中文已经没有问题了。谢谢~</description>
		<content:encoded><![CDATA[<p><a href="#comment-686" rel="nofollow">@蔡瀛 </a><br />
按照你的建议把源代码文件保存成utf8格式编译。保存和查询中文已经没有问题了。谢谢~</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：蔡瀛</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-686</link>
		<dc:creator>蔡瀛</dc:creator>
		<pubDate>Sun, 21 Feb 2010 02:27:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-686</guid>
		<description>&lt;a href=&quot;#comment-684&quot; rel=&quot;nofollow&quot;&gt;@ecli&lt;/a&gt; 
hi, 如果是程序的话你可能需要把源代码文件保存成utf8格式编译。在我的机器上环境是“zh_CN.UTF-8”， 保存中文查询中文都没有问题。</description>
		<content:encoded><![CDATA[<p><a href="#comment-684" rel="nofollow">@ecli</a><br />
hi, 如果是程序的话你可能需要把源代码文件保存成utf8格式编译。在我的机器上环境是“zh_CN.UTF-8”， 保存中文查询中文都没有问题。</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：ecli</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-685</link>
		<dc:creator>ecli</dc:creator>
		<pubDate>Sat, 20 Feb 2010 09:50:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-685</guid>
		<description>另外，我写了一个包含中文的存储例子，测试结果该记录不能被存入。
	string theDoc = &quot;&lt;b&gt;aa&lt;/b&gt;c node&quot;;
	XmlUpdateContext theContext = theManager.createUpdateContext();
	theContainer.putDocument( &quot;&quot;, theDoc, theContext, DBXML_GEN_NAME );</description>
		<content:encoded><![CDATA[<p>另外，我写了一个包含中文的存储例子，测试结果该记录不能被存入。<br />
	string theDoc = &#8220;<b>aa</b>c node&#8221;;<br />
	XmlUpdateContext theContext = theManager.createUpdateContext();<br />
	theContainer.putDocument( &#8220;&#8221;, theDoc, theContext, DBXML_GEN_NAME );</p>
]]></content:encoded>
	</item>
	<item>
		<title>来自：ecli</title>
		<link>http://www.bdbchina.com/2009/08/berkeley-db-xml-%e5%85%a5%e9%97%a8%e7%b3%bb%e5%88%97%e4%b9%8b%e4%b8%89%ef%bc%9a-%e4%bd%bf%e7%94%a8berkeley-db-xml-shell/comment-page-1/#comment-684</link>
		<dc:creator>ecli</dc:creator>
		<pubDate>Sat, 20 Feb 2010 08:28:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.bdbchina.com/?p=511#comment-684</guid>
		<description>&lt;a href=&quot;#comment-683&quot; rel=&quot;nofollow&quot;&gt;@蔡瀛 &lt;/a&gt; 
你好，我碰到的这个错误不是在dbxml shell里面，而是在程序中我通过调用类似以下的代码时出现的。querystring包含中文。
...
XmlQueryContext context = _manager-&gt;createQueryContext(); 
XmlResults res = _manager-&gt;query(querystring,context);    
...</description>
		<content:encoded><![CDATA[<p><a href="#comment-683" rel="nofollow">@蔡瀛 </a><br />
你好，我碰到的这个错误不是在dbxml shell里面，而是在程序中我通过调用类似以下的代码时出现的。querystring包含中文。<br />
&#8230;<br />
XmlQueryContext context = _manager-&gt;createQueryContext();<br />
XmlResults res = _manager-&gt;query(querystring,context);<br />
&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
Դ
