我正在开发一个使用XML(我使用javax.xml.parsers.Document
和朋友)作为输入数据的应用。
当文档遗失某些内容(根据我的应用程序逻辑而遗漏)时,我会向用户显示XML的错误部分,例如:
input.xml
:
<root>
<tag-a>
<tag-b />
</tag-a>
</root>
我的申请要求tag-b
无法在tag-a
内使用,所以我输出:
Error: tag-b cannot have a tag-a as parent. Check:
input.xml:
...
3: <tag-b />
...
XSD或DTD不是一个选项,因为我的问题比示例中的更复杂。
在我的代码中,我处理Node
,Element
,...,我需要的是一个神奇的getSourceXML
方法,例如:
Element e = ...;
if (e /* something wrong */) {
System.err.println("Error " + e.getSourceXML());
}
在XML中转换Element
是没有用的,因为可能有多个相似的元素(例如:相同的标记名称/属性),我会向用户显示正确的元素(例如,第7行而不是第45行的那个。)