- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在完全被这个 DOM XML 解析器难住了。我获得了两个标签的错误信息,并且我无法弄清楚为什么这两个标签(name 和 cmt)始终具有相同的信息而不是正确的信息。
我使用的 XML 如下:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="http://ridewithgps.com/">
<metadata>
<name>Home Test</name>
<link href="http://ridewithgps.com/routes/1714475">
<text>Home Test</text>
</link>
<time>2012-09-13T16:08:10Z</time>
</metadata>
<rte>
<name>Home Test</name>
<rtept lat="39.41333" lon="-77.4624">
<name>Right</name>
<cmt>Turn right onto Grouse Dr</cmt>
</rtept>
<rtept lat="39.41288" lon="-77.46297000000004">
<name>Right</name>
<cmt>Turn right onto Hunting Horn Ln</cmt>
</rtept>
<rtept lat="39.41431" lon="-77.46625">
<name>Right</name>
<cmt>Turn right onto Partridge Way</cmt>
</rtept>
<rtept lat="39.41431" lon="-77.46625">
<name>Left</name>
<cmt>Turn left onto Hunting Horn Ln</cmt>
</rtept>
<rtept lat="39.41288" lon="-77.46297000000004">
<name>Left</name>
<cmt>Turn left onto Grouse Dr</cmt>
</rtept>
<rtept lat="39.41333" lon="-77.4624">
<name>Right</name>
<cmt>Turn right onto Grouse Ct</cmt>
</rtept>
</rte>
</gpx>
我整理的 XML 解析器如下:
public void parseXMLFile(String fullpath) {
String metadata_name = null;
String metadata_link_href = null;
String metadata_link_name = null;
String metadata_time = null;
String rte_name = null;
Double point_lat = null;
Double point_lon = null;
Double last_lat = null;
Double last_lon = null;
String point_name = null;
String point_cmt = null;
Float distance_to = null;
// File f = new File(fullpath);
String fileContents = null;
try {
fileContents = readFileAsString(fullpath);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Document doc = (Document) loadXMLFromString(fileContents);
doc.getDocumentElement().normalize();
Element root = doc.getDocumentElement();
Log.d("XML", "ROOTNODE:" + root.getNodeName());
NodeList nodeList = doc.getElementsByTagName("metadata");
Node nodee = nodeList.item(0);
Log.d("XML", "NODELISTLENGTH1:" +
nodee.getChildNodes().getLength());
for (int i = 0; i < nodee.getChildNodes().getLength(); i++) {
Node node = nodee.getChildNodes().item(i);
if (node.getNodeName().equalsIgnoreCase("name")) {
metadata_name = node.getTextContent();
} else if (node.getNodeName().equalsIgnoreCase("link")) {
NamedNodeMap attributes = node.getAttributes();
if (attributes.getNamedItem("href") != null) {
String href = attributes.getNamedItem("href")
.getNodeValue();
metadata_link_href = href;
}
metadata_link_name = node.getTextContent();
// Log.i("XML", "link node:" + node.getTextContent());
} else if (node.getNodeName().equalsIgnoreCase("time")) {
metadata_time = node.getTextContent();
}
}
// DO THE RTE NODES AFTER THIS
NodeList nodeList2 = doc.getElementsByTagName("rte");
Node nodee2 = nodeList2.item(0);
Log.d("XML", "NODELISTLENGTH2:"
+ nodee2.getChildNodes().getLength());
for (int i = 0; i < nodee2.getChildNodes().getLength(); i++) {
Node node = nodee2.getChildNodes().item(i);
if (node.getNodeName().equalsIgnoreCase("name")) {
rte_name = node.getTextContent();
} else if (node.getNodeName().equalsIgnoreCase("rtept")) {
NamedNodeMap attributes = node.getAttributes();
if (attributes.getNamedItem("lat") != null) {
// STORE THE LAST LAT FOR MEASURING DISTANCE BETWEEN
if (point_lat != null) {
last_lat = point_lat;
}
point_lat = Double.parseDouble(attributes.getNamedItem(
"lat").getNodeValue());
}
if (attributes.getNamedItem("lon") != null) {
// STORE THE LAST LON FOR MEASURING DISTANCE BETWEEN
if (point_lon != null) {
last_lon = point_lon;
}
point_lon = Double.parseDouble(attributes.getNamedItem(
"lon").getNodeValue());
}
NodeList rteptList = doc.getElementsByTagName("rtept");
// NodeList rteptList = node.getChildNodes();
Node nodee3 = rteptList.item(0);
Log.d("XML", "NODELISTLENGTH3:"
+ nodee3.getChildNodes().getLength());
for (int i1 = 0; i1 < nodee3.getChildNodes().getLength(); i1++) {
Node rteptNode = nodee3.getChildNodes().item(i1);
if (rteptNode.getNodeName().equalsIgnoreCase("name")) {
point_name = rteptNode.getFirstChild().getNodeValue();
} else if (rteptNode.getNodeName().equalsIgnoreCase("cmt")) {
point_cmt = rteptNode.getFirstChild().getNodeValue();
}
}
// DO THE DATABASE STORAGE HERE
Log.i("XML", "name node:" + metadata_name);
Log.i("XML", "link node:" + metadata_link_name);
Log.i("XML", "link attribute [href]:" + metadata_link_href);
Log.i("XML", "time node:" + metadata_time);
Log.i("XML", "rte_name:" + rte_name);
Log.i("XML", "point_lat:" + point_lat.toString());
Log.i("XML", "point_lon:" + point_lon.toString());
Log.i("XML", "point_name:" + point_name);
Log.i("XML", "point_cmt:" + point_cmt);
}
}
} catch (Exception e) {
String estr = e.getStackTrace().toString();
Log.d("XML", "XML Exception: " + e + ":" + estr);
}
}
`
我看到的输出是错误的...
09-15 03:37:20.963: D/XML(14951): NODELISTLENGTH3:5
09-15 03:37:20.963: I/XML(14951): name node:Home Test
09-15 03:37:20.963: I/XML(14951): link node: Home Test
09-15 03:37:20.963: I/XML(14951): link attribute [href]:http://ridewithgps.com/routes/1714475
09-15 03:37:20.963: I/XML(14951): time node:2012-09-13T16:08:10Z
09-15 03:37:20.963: I/XML(14951): rte_name:Home Test
09-15 03:37:20.963: I/XML(14951): point_lat:39.41288
09-15 03:37:20.963: I/XML(14951): point_lon:-77.46297000000004
09-15 03:37:20.963: I/XML(14951): point_name:Right
09-15 03:37:20.963: I/XML(14951): point_cmt:Turn right onto Grouse Dr
09-15 03:37:20.973: D/XML(14951): NODELISTLENGTH3:5
09-15 03:37:20.973: I/XML(14951): name node:Home Test
09-15 03:37:20.973: I/XML(14951): link node: Home Test
09-15 03:37:20.973: I/XML(14951): link attribute [href]:http://ridewithgps.com/routes/1714475
09-15 03:37:20.973: I/XML(14951): time node:2012-09-13T16:08:10Z
09-15 03:37:20.973: I/XML(14951): rte_name:Home Test
09-15 03:37:20.973: I/XML(14951): point_lat:39.41333
09-15 03:37:20.973: I/XML(14951): point_lon:-77.4624
09-15 03:37:20.973: I/XML(14951): point_name:Right
09-15 03:37:20.973: I/XML(14951): point_cmt:Turn right onto Grouse Dr
为什么 point_name 总是“右转”而 point_cmt 总是“右转进入 Grouse Dr”?我该如何解决这个问题?
提前致谢。
最佳答案
尝试替换代码中的以下代码段。
Node nodee3 = rteptList.item(0);
Log.d("XML", "NODELISTLENGTH3:"
+ nodee3.getChildNodes().getLength());
for (int i1 = 0; i1 < nodee3.getChildNodes().getLength(); i1++) {
Node rteptNode = nodee3.getChildNodes().item(i1);
if (rteptNode.getNodeName().equalsIgnoreCase("name")) {
point_name = rteptNodenode.getTextContent();
} else if (rteptNode.getNodeName().equalsIgnoreCase("cmt")) {
point_cmt = rteptNodenode.getTextContent();
}
}
关于java - 为什么此 XML DOM 解析器无法正确解析 rtept、name 和 cmt 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435587/
This线程激发了这个问题。这里又是代码示例。我正在寻找能够准确说明正在发生的事情的答案。 两者 x = 0; x+/*cmt*/+; 和 var f/*cmt*/oo = 'foo'; 产生语法错误
我想将一个对象( ReportBean )持久化到数据库中,但我收到了错误消息: javax.persistence.TransactionRequiredException: Transaction
在 CMT (EJB3) 中使用以下编程事务和 session 习惯用法并且将 Hibernate Core 设置为使用 CMT 时会发生什么? 假设需要当前 CMT 事务并使用默认的 @Transa
我正在使用 JPA 编写 EJB-CMT bean。在我的 EJB 方法中,我有一些持久操作,并且我需要在“持久”操作之一之后调用“刷新”。 这是我的示例代码: @Stateless @LocalBe
我正在尝试创建一个合并工具,通过 SVN 将多个不同的分支合并在一起。 我想使用通过 AS7 运行的 JBPM。我使用的是 JBPM 5.4,因为它是与我的环境兼容的最高版本。 如果运行一次,就可以正
hibernate documentation说: With CMT, transaction demarcation is declared in session bean deployment d
是否可以捕获 CMT(容器管理事务)无状态 bean 中的异常? 当我尝试时,下面的代码不会捕获任何异常。如果我使用BMT(Bean Managed Transaction),我可以捕获异常。但我想留
我正在使用带有 EJB 和 CMT 事务的应用程序。我有一个 EJB(我们称它为 EJB1),其中 CMT 通过注释定义为“requires_new”,例如: @TransactionAttribut
环境:Java EE 6 如何在Interceptor中判断调用的bean是容器管理的(CMT)还是bean管理的(BMT)? 最佳答案 根据定义,Bean 始终由容器管理。 您可能想知道当前事务是
我有一个要求,我需要知道容器管理的事务何时提交无状态 session bean 的事务。我希望有某种监听器系统的拦截器,我可以将其挂接到 TransactionManager 上,但没有任何明显的东西
我需要手动从 CMT bean 提交事务。有一个处理多个记录的循环,每个记录应在其自己的事务中处理。我想将方法事务支持标记为 NOT_SUPPORTED,然后从方法控制事务。但是,我无法从 Ses
我尝试使用 Hibernate 配置 Spring Boot: import javax.persistence.EntityManager; import javax.persistence.Ent
我在事务回滚方面遇到问题,其中一个用 REQUIRES_NEW 注释的子事务被回滚,因为父事务被回滚。我很困惑,因为我曾认为 JTA/JPA 独立处理这些事务,因此一个事务的回滚不会影响另一个事务。我
如何管理 CMT 和 BMT? 根据我的理解,容器管理事务是通过 JTA 实现的,它由应用程序服务器支持,而不是像 tomcat 这样的网络服务器。 CMT 由事务管理器实现处理,它特定于每个应用程序
有没有可能有这样的东西? 客户端代码在带有伪代码的线程中: transaction.begin(); ejb.method(); transaction.commit(); method() 属于 E
这本质上是How to locate the source of JBAS011470 error in JBoss?的重复。 但本质上,一旦我添加第二个持久单元,它就会给我这个错误。这太荒谬了。我不
该主题的各种部分描述使我怀疑 BMT 与应用程序管理的 EntityManager(以及 UserTransaction 的使用)密切相关,而 CMT 与容器管理的 EntityManager 密切相
我有一个整合两个独立系统的情况。一种是使用 J2EE、EJB,另一种是基于 Spring 的。现在的问题是两个系统都可以调用彼此的方法,我也想管理事务。我不确定如何协调这两个应用程序事务管理器,因为它
我正在开发一个遗留应用程序。我们将其从 JDBC 迁移到带有声明性事务的 Spring 3.2 + Hibernate 4.1.12 + JTA 2。我看到容器管理事务 (CMT) 正在按预期进行事务
我当前在刷新 PersistenceContext 中的数据时遇到问题。我有一个 CMT EJB3 bean,它调用 BMT EJB3 bean。在 BMT bean 中,我对对象执行一些处理逻辑。我
我是一名优秀的程序员,十分优秀!