XML和JSON如何与SQL结合使用?

时间:2015-01-11 22:30:07

标签: sql ajax xml json

我已经完成了很多关于JSON是什么以及它如何在网络上使用的谷歌搜索。我知道这是一种使用Javascript对象表示法存储数据的方法,并且它是一种轻量级的存储数据方式,因此比XML更可取。

但是,我并不完全清楚XML和JSON是如何用于传输数据的,尤其是在使用SQL时。 SQL数据是否加载到XML文件/ JSON字符串中,然后与Ajax一起显示?

我知道这是一个完整的新手问题,但我很困惑。

3 个答案:

答案 0 :(得分:1)

XML和JSON是序列化格式。它们是纯文本格式,允许您表达纯文本以外的内容。 JSON可以表达数组和键值对象的复杂嵌套层次结构,XML可以表达更复杂的对象 - 属性 - 值 - 内容层次结构。这两种数据格式只允许您以定义的方式发送多个简单字符串。

在更实际的术语中,您如何将三个项目从A发送到B?您可以轻松发送" foo",它只是一个字符串。但是" foo"," bar"和"巴兹"?您想发明自己的序列化格式吗?像:

foo,bar,baz

然后你在另一端进行一些字符串处理,以,分割,让你的三个元素回来?如果您需要发送更复杂的数据怎么办?如果您的数据包含",&#34 ;?怎么办?这就是现有序列化标准的用武之地,如JSON和XML。您不需要每次都从头开始回答所有这些问题,只需使用现有的,支持良好的标准:

["foo","bar","baz"]

或:

<data>
    <item>foo</item>
    <item>bar</item>
    <item>baz</item>
</data>

您可以根据需要动态生成此数据;数据库可以是此数据的一种可能来源。你没有把它放在一个文件中,你可以根据需要输出它。伪代码示例:

var data = []
while (row = fetch_from_database())
    data.push(row.name)
var json = json_encode(data)
print json

在这里,您要创建一个数组data,其中包含数据库的name列的内容,然后将其编码为JSON并输出。输出将类似于&#34; foo&#34;,&#34; bar&#34;,&#34; baz&#34;上面的例子。

答案 1 :(得分:0)

您可以将JSON和XML视为写入对象的方式。例如,假设我会给你一些随机书,我会请你向我描述一下这本书是什么,你会怎么说?

或许,您可以将该书的标题,作者,出版商和其他特征命名为该书。所以从本质上讲,你所做的就是用语言向我描述JSON或XML在语法中的作用。 JSON和XML是表示对象的方法。

SQL是一种逻辑存储和搜索信息的方法。 SQL数据库可能包含对象,使用SQL可以搜索,存储和检索(等)这些对象。

Ajax是一种传递信息的手段(异步)。使用Ajax,您可以在系统/应用程序之间传输对象(例如JSON或XML对象)的信息。

答案 2 :(得分:0)

SQL用于存储数据。 XML和JSON是人类可读的,基于文本的数据传输协议。

通常,请求是通过HTTP或AJAX进行的。接收请求的应用程序从SQL数据库中检索数据。请求的数据被格式化为XML或JSON,然后作为响应传送给请求者。

XML和JSON可以包含数据库的所有元素。 XML的最初目的是在具有不同数据存储的两个系统之间传输数据。 JSON是作为XML的简化替代创建的。 JSON是面向键值对,其中数据库列名是键,存储在该列中的数据是与键关联的值。

例如,Google Geo Coding为其响应提供了格式为JSON或XML的选项。

XML / geocode / xml /

$data = @file_get_contents(http://maps.googleapis.com/maps/api/geocode/xml?address=1234+Main+St&sensor=false);

这会创建一个非常简单的XML响应 从XML响应中获取谷歌纵横:

$xmldecode  = new SimpleXMLElement($data);
$coordinates = $googlexml - > Response - > Placemark - > Point - > coordinates;
$coordinates = split(",", $coordinates);
$lat = $coordinates[1];

JSON / geocode / json /

$data = @file_get_contents(http://maps.googleapis.com/maps/api/geocode/json?address=1234+Main+St&sensor=false);

从JSON响应中获取谷歌纵横:

  $json = json_decode($data,true);
  $lat = $json['results']['0']['geometry']['location']['lat'];

SQL记录可以转换为JSON
示例mySQL导出为JSON

 {"number": 9547839995,
"TimeStamp": "2014-10-09 21:38:10",
"ip": "",
"business": "Creative R Us Computer & Phone Repair",
"addr": "547 E Sample Rd",
"city": "Pompano Beach,
  FL 33064",
"email": "",
"exp": "",
"web": "http://www.creativerus.com",
"name": "",
"note": ""}]

现在XML mySQL Export提供了更多细节 示例mySQL导出为XML

<pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/">
    <!--
    - Structure schemas
    -->
    <pma:structure_schemas>
        <pma:database name="isl_contact" collation="latin1_swedish_ci" charset="latin1">
            <pma:table name="Profile">
                CREATE TABLE `Profile` (
                  `number` bigint(20) NOT NULL DEFAULT '0',
                  `TimeStamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                  `ip` char(16) COLLATE utf8_bin NOT NULL,
                  `business` char(64) COLLATE utf8_bin DEFAULT '',
                  `addr` char(64) COLLATE utf8_bin DEFAULT '',
                  `city` char(64) COLLATE utf8_bin DEFAULT '',
                  `email` char(128) COLLATE utf8_bin NOT NULL,
                  `exp` char(16) COLLATE utf8_bin DEFAULT '',
                  `web` char(128) COLLATE utf8_bin DEFAULT NULL,
                  `name` char(32) COLLATE utf8_bin DEFAULT '',
                  `note` varchar(256) COLLATE utf8_bin NOT NULL,
                  PRIMARY KEY (`id`),
                  KEY `NUMBER` (`ip`,`state`)
                ) ENGINE=MyISAM AUTO_INCREMENT=369 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
            </pma:table>
        </pma:database>
    </pma:structure_schemas>

    <!--
    - Database: 'isl_contact'
    -->
    <database name="isl_contact">
        <!-- Table Profile -->
        <table name="Profile">
            <column name="number">9545555555</column>
            <column name="TimeStamp">2014-10-09 21:38:10</column>
            <column name="ip"></column>
            <column name="business">Creative R Us Computer</column>
            <column name="addr">547 E Sample Rd</column>
            <column name="city">Pompano Beach,  FL 33064</column>
            <column name="email"></column>
            <column name="exp"></column>
            <column name="web">http://www.creativerus.com</column>
            <column name="name"></column>
            <column name="note"></column>
            <column name="link"></column>
            <column name="contact"></column>
            <column name="source"></column>
            <column name="id">1</column>
            <column name="mobile"></column>
            <column name="state">3</column>
            <column name="attributes">0</column>
            <column name="fuDate">NULL</column>
            <column name="fuTime">NULL</column>
        </table>
    </database>
</pma_xml_export>

[http://php.net/manual/en/xml.examples.php][1]