我是XML和AJAX的新手,我只是Javascript和jQuery的新手.在我设计我们的网站的其他工作职责.截止日期非常接近,我能想到的唯一方法是使用AJAX.我有一个充满XML对象的文档,比如这个重复:
<item>
<subject></subject>
<date></date>
<thumb></thumb>
</item>
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含所有元素及其子元素的数组.我已经阅读了几个小时的AJAX jQuery教程,甚至不知道从哪里开始,因为他们都假设一定程度的javascript熟练程度.如果有人能告诉我循环所有元素并将他们的孩子放入阵列的最简单方法,我会很感激.
我有一个Java应用程序需要通过VPN连接到远程PostgreSQL数据库.这是相关代码:
Class.forName("org.postgresql.Driver");
Connection con = null;
con = DriverManager.getConnection("jdbc:postgresql://" + sqlHost + ":" + sqlPort + "/mydb", username, password);
Run Code Online (Sandbox Code Playgroud)
这会引发错误
org.postgresql.util.PSQLException: FATAL: pg_hba.conf rejects connection for host "172.16.7.5", user "xxxxx", database "xxxxx", SSL off
Run Code Online (Sandbox Code Playgroud)
sqlHost实际上是主机IP地址192.168.12.55,但是如果您注意到错误消息表明它正在连接到主机172.16.7.5(这是VPN分配的IP地址).
我可以使用PGAdmin 和 Python的psocopg2模块在完全相同的VPN上使用完全相同的连接参数连接到此PostgreSQL数据库.这是等效的Python代码:
conn = psycopg2.connect("dbname=mydb user="+username+" password="+password+" host="+sqlHost+" port="+sqlPort)
Run Code Online (Sandbox Code Playgroud)
为什么世界上只有 Java有问题呢?由于连接适用于PGAdmin和Python,我假设Java中有一些设置我使用不正确,但我找不到任何东西.
编辑:在阅读PostgreSQL文档之后,我发现列出错误主机名的问题不是问题的一部分,而是PostgreSQL通过VPN看到我的计算机的方式.然而,问题仍然没有解决.
我有一堆嵌套数据,其格式与JSON类似:
company="My Company"
phone="555-5555"
people=
{
person=
{
name="Bob"
location="Seattle"
settings=
{
size=1
color="red"
}
}
person=
{
name="Joe"
location="Seattle"
settings=
{
size=2
color="blue"
}
}
}
places=
{
...
}
Run Code Online (Sandbox Code Playgroud)
有许多不同的参数,不同的深度水平 - 这只是一个非常小的子集.
值得注意的是,当创建一个新的子数组时,总会有一个等号后面跟一个换行符(如上图所示).
是否有任何简单的循环或递归技术将这些数据转换为系统友好的数据格式,如数组或JSON?我想避免硬编码属性的名称.我正在寻找可以在Python,Java或PHP中运行的东西.伪代码也很好.
我感谢任何帮助.
编辑:我发现了Python的Pyparsing库,看起来它可能是一个很大的帮助.我找不到任何关于如何使用Pyparsing来解析未知深度的嵌套结构的示例.任何人都可以根据我上面描述的数据阐明Pyparsing吗?
编辑2:好的,这是Pyparsing中一个有效的解决方案:
def parse_file(fileName):
#get the input text file
file = open(fileName, "r")
inputText = file.read()
#define the elements of our data pattern
name = Word(alphas, alphanums+"_")
EQ,LBRACE,RBRACE = map(Suppress, "={}")
value = Forward() #this tells pyparsing that values can be recursive
entry …Run Code Online (Sandbox Code Playgroud)