为什么我会得到额外的节点"在Scala中解析XML时?

时间:2018-02-06 20:23:59

标签: scala xml-parsing

以下是我的网络服务器返回的XML

<root>
    <item attr="test1">
    <item attr="test2">
</root>

这是Scala代码

var url = "http://mywebserver/my.xml"
val xml = XML.load(url)
logger.info(s"The XML is: $xml")
var items = xml.child
logger.info(s"items: $items")
items.foreach(item => {
  logger.info(item.toString())
  val attr = item.attribute("attr")
  logger.info(s"Attribute: $attr")
})

记录的XML是Web服务器返回的XML的副本 但是foreach循环打印

INFO myclassName - 
INFO myclassName - Attribute: None
INFO myclassName - <item attr="test1">
INFO myclassName - Attribute: test1
INFO myclassName - 
INFO myclassName - Attribute: None
INFO myclassName - <item attr="test2">
INFO myclassName - Attribute: test2

额外的空白节点来自哪里?我错过了任何配置吗?

1 个答案:

答案 0 :(得分:2)

<foo><bar></bar></foo><foo> <bar> </bar> </foo>是不同的XML。在XML规范中,标记之间的字符(包括空格)构成了封闭标记的“文本元素”子元素,而Scala的XML解析只是通过将空白作为文本元素读取来表达规范。