- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在使用 dom 和 DocumentBuilder 解析 xml 时遇到一些麻烦。我能够让它工作,但我想我对所有子节点等有点困惑。
这是我正在使用的 XML:
<?xml version="1.0" encoding="utf-8"?>
<LabTests>
<LabTest type="specialty" name="Anti-FXa activity" id="antiFXa" order="16">
<values unit="U/mL" default="N/A">
<value type="increased" val="0">
<conditions>
<condition>Heparin effect</condition>
</conditions>
</value>
<value type="normal" val="">
<conditions></conditions>
</value>
<value type="decreased" val="">
<conditions></conditions>
</value>
</values>
</LabTest>
<LabTest type="general" name="aPTT" id="aPTT" order="">
<values unit="secs" default="N/A">
<value type="increased" val="">
<conditions>
<condition>Acquired hemophilia</condition>
<condition>Acquired vWD</condition>
<condition>DIC</condition>
<condition>Dysfibrinogenemia</condition>
<condition>FI deficiency</condition>
<condition>FII deficiency</condition>
<condition>FII/IIa inhibitors</condition>
<condition>FIX deficiency</condition>
<condition>FIX inhibitors</condition>
<condition>FV deficiency</condition>
<condition>FV inhibitors</condition>
<condition>FVIII deficiency</condition>
<condition>FX deficiency</condition>
<condition>FX inhibitors</condition>
<condition>FXI deficiency</condition>
<condition>FXI inhibitors</condition>
<condition>FXII deficiency</condition>
<condition>FXII inhibitors</condition>
<condition>Heparin effect</condition>
<condition>Liver disease effect</condition>
<condition>Lupus anticoagulant</condition>
<condition>Monoclonal gammopathy</condition>
<condition>Vitamin K deficiency</condition>
<condition>vWD type 1</condition>
<condition>vWD type 2</condition>
<condition>vWD type 3</condition>
<condition>Warfarin effect</condition>
</conditions>
</value>
<value type="normal" val="">
<conditions>
<condition>DIC</condition>
<condition>Dysfibrinogenemia</condition>
<condition>FVII deficiency</condition>
<condition>FXIII deficiency</condition>
<condition>FVII inhibitors</condition>
<condition>Liver disease effect</condition>
<condition>Lupus anticoagulant</condition>
<condition>Monoclonal gammopathy</condition>
<condition>Vitamin K deficiency</condition>
<condition>vWD type 1</condition>
<condition>vWD type 2</condition>
<condition>vWD type 3</condition>
<condition>Warfarin effect</condition>
</conditions>
</value>
<value type="decreased" val="">
<conditions>
<condition>DIC</condition>
</conditions>
</value>
</values>
</LabTest>
</LabTests>
我想做的是捕获每个 LabTest
元素,并在每个元素中捕获 value
元素(并获取 type
的值)并且在 value
中元素,捕获所有 condition
元素。
最后,我想要类似 Map<String, HashMap<String, ArrayList<String>>
的东西, 其中String
是 LabTest
名称和 HashMap
使用 type
(例如 decreased
、 increased
等)作为键,然后用 value
的条件填充 ArrayList类型。
够糊涂了吧?
基本上,我认为我只需要一个示例,说明如何循环并获取每个 LabTest 及其“值”元素,以及这些“值”元素下的每个“条件”元素。
最佳答案
这应该像您描述的那样工作:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("input.xml");
NodeList labTestList = doc.getElementsByTagName("LabTest");
for (int i = 0; i < labTestList.getLength(); ++i)
{
Element labTest = (Element) labTestList.item(i);
String labTestType = labTest.getAttribute("type");
NodeList valueList = labTest.getElementsByTagName("value");
for (int j = 0; j < valueList.getLength(); ++j)
{
Element value = (Element) valueList.item(j);
String valueType = value.getAttribute("type");
NodeList conditionList = value.getElementsByTagName("condition");
for (int k = 0; k < conditionList.getLength(); ++k)
{
Element condition = (Element) conditionList.item(k);
String conditionText = condition.getFirstChild().getNodeValue();
}
}
}
关于java - 使用 NodeList 和 DocumentBuilder 解析 Xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604876/
我有一个带有 JFileChooser 的基本 Java-UI。 我尝试使用以下代码解析所选文件: Document document = builder.parse(getClass().getRe
我试图向文档生成器解析一个包含井号标签 (#) 的 xml 路径,但它不起作用,似乎解析器会忽略 # 后面的所有内容。有谁知道我能做什么吗? 这是代码: Document document = Doc
我正在查看的当前代码库使用 DOM 解析器。以下代码片段在 5 种方法中重复: DocumentBuilderFactory factory = DocumentBuilderFactory.new
我有一个包含页眉/页脚的模板文档,我必须插入多个文档。在每个文档之后我需要插入一个分页符。 在com.aspose.words.DocumentBuilder中有一个insertDocument()和
这个问题已经有答案了: How to fix error: The markup in the document following the root element must be well-for
我正在尝试从给定的 URL 解析一些 XML。代码如下: try { URL myUrl = new URL(sURL); URLCon
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance (); DocumentBuilder dBuilder =
我在 JAVA 中使用 DocumentBuilder Factory 来创建 XML 文件,并且在我的 createTextNode() 方法中“null”值 Not Acceptable 。 El
在此 Document document = documentBuilder.parse(filename); 我正在尝试通过缓冲输入流读取一组Xml文件。当我在命令提示符中输入文件时,出现错误 As
我是解析 XML 的新手,并且遇到实体问题。 (我正在 Android 上执行此操作,如果有影响的话)。 有没有办法让它把一个实体变成它所代表的角色?我在元素的子元素中有这个:“isn't”(减去引号
我正在尝试使用以下代码在 java 中解析 xml File fXmlFile = new File(DAL_DB_ALARM_MOVED_XML); DocumentBuilderFactory d
我尝试使用 DocumentBuilder 在 Java 中编写一个简单的 XML 文件。我希望 XML 文件看起来像这样:
我正在尝试合并 4 个 word 文档并强制每个文档的内容从新页面开始。但是,它不是将每个文档的文本附加到单独的页面,而是将所有文档的文本添加到一个页面。像这样: 我该如何解决?这是代码: publ
我目前正在从 PHP 脚本(如下所示)读取 XML 文件,该文件工作正常,但是我现在想添加某种形式的 HTTP 超时来检索 XML。 DocumentBuilderFactory docBuilder
我正在尝试根据 XSD 架构验证某些 XML 输入。解析器可以工作,但是当我 Hook 模式时,出现以下异常。我已经使用外部 validator 验证了测试输入,所以我已经消除了它。有谁知道如何设置一
我正在尝试将包含 XML 文档的树(扩展 JTree)保存到已更改其结构的 DOM 对象。 我已经创建了一个新的文档对象,遍历树并成功检索了内容(包括 XML 文档的原始编码),现在有一个 ByteA
是标准的Java 1.6 javax.xml.parsers.DocumentBuilder类线程安全吗?从多个线程并行调用 parse() 方法是否安全? JavaDoc 没有提到这个问题,但 Ja
谁能告诉我应该在什么情况下将 setNamespaceAware 设置为 true 或 false 根据文档指定由此代码生成的解析器将提供对 XML 命名空间的支持。 但是,如果我将其设置为 true
我的 Java 经验很少。我试图强制将文档读取为 UTF-8,但在尝试将 InputStream 阅读器连接到文档生成器时遇到了困难。 这是我到目前为止所拥有的: import javax.xml.x
我正在尝试使用采用 InputSource 的 parse 方法来解析 DocumentBuilder 实例。 错误是: The method parse(InputStream) in the ty
我是一名优秀的程序员,十分优秀!