<root>
<h id="1">
<d value="1,2,3,4,5"><open>10:00</open><close>23:00</close></d>
<d value="6"><open>10:00</open><close>2:00</close></d>
<d value="7"><open>10:00</open><close>21:00</close></d>
</h>
<h id="2">
</h>
</root>
这里我有XML,其中root具有<h>
标记节点的列表。现在我需要将它们分成几部分并将其设置为不同的变量(添加到地图中)。
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new ByteArrayInputStream(data.getBytes("utf-8"))));
NodeList nList = doc.getElementsByTagName("h");
for (int i = 0; i < nList.getLength(); i++)
{
Node nNode = nList.item(i);
System.out.println(nNode.getAttributes().getNamedItem("id") + " " + ?????);
}
我应该拨打什么来获取nNode
的值(字符串值)?
这是我在寻找上述代码的asnwer,一旦有人填写了????
1 <h id="1"><d value="1,2,3,4,5"><open>10:00</open><close>23:00</close></d><d value="6">open>10:00</open><close>2:00</close></d><d value="7"><open>10:00</open><close>21:00</close></d></h>
2 <h id="2"></h>
我并不介意拥有根元素
答案 0 :(得分:2)
您可以使用Node.getTextContent()
方便地获取节点的所有文本(也可以获取孩子的文本)。
请参阅Parsing xml file contents without knowing xml file structure以获取简短示例。
如果您正在尝试获取value
节点的d
属性(我实际上无法说明,您的问题对我来说有点不清楚),那么它会有所不同 - 对于您将遍历每个h
节点的子节点(使用getChildNodes()
或getFirstChild()
+ getNextSibling()
)然后获取他们的value
属性,就像获取id
节点的h
属性(上面的链接还显示了迭代子节点的示例)。
答案 1 :(得分:1)
你试过jDom库吗? http://www.jdom.org/docs/apidocs/org/jdom2/output/XMLOutputter.html
XMLOutputter outp = new XMLOutputter();
String s = outp.outputString(your_jdom_element);
答案 2 :(得分:0)
如果您使用nNode.toString()
中的节点,请尝试javax.xml.soap.Node
。
答案 3 :(得分:0)
您可以使用:
http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Node.html#getTextContent()
但您的示例nNode有其他节点,而不仅仅是文本。看来你需要帮助方法从子节点构造String。
将您的nNode传递给nodeToString