怎么用java获取一个XML文档的行数,并能在某一行写入文字? 5

怎么用java获取一个XML文档的行数,并能在某一行写入文字?... 怎么用java获取一个XML文档的行数,并能在某一行写入文字? 展开
 我来答
百度网友b0dcff2
2015-11-11 · TA获得超过116个赞
知道答主
回答量:80
采纳率:100%
帮助的人:48.4万
展开全部
参考链接:http://www.zhihu.com/question/20846718/answer/24033030

jdom中有元素行号的信息。具体做法是:1.修改SAXHandler, 将其实现的借口和方法全部去掉,只留下DefaultHandler的方法。我们只需要关注setDocumentLocator(org.xml.sax.Locator locator) ;和startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException 这2个方法。其中第一个方法中的locator中包含了行号信息。2.修改Element,原始的Element中不包含行号属性,需要新建一个类ElementWithLineNumber承Element. public class ElementWithLineNumber extends Element { private int lineNumber;}3. 修改第一步中提到的第二个方法。以jdom2.0.5为例,将:final Element element = currentLocator == null ? factory.element(localName, namespace) : factory.element(currentLocator.getLineNumber(), currentLocator.getColumnNumber(), localName, namespace);修改为: final Element element = new ElementWithLineNumber(localName, namespace); ((ElementWithLineNumber)element).setLineNumber(currentLocator.getLineNumber());4.调用:try { SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); SAXHandler hand = new SAXHandler(); sp.parse( new File( "c:\\workspace\\eclipse\\TestXmlCompare\\xmlCompareConfig.xml"), hand); Document doc = hand.getDocument(); Element foo = doc.getRootElement(); List<Element> allChildren = foo.getChildren(); for (int i = 0; i < allChildren.size(); i++) { Element a = (Element) allChildren.get(i); System.out.print(a.getName() + ":" + a.getText() + " row=" + ((ElementWithLineNumber) a).getLineNumber() + "\n"); } } catch (Exception e) { e.printStackTrace(); }希望可以帮到你。
追问
我想知道怎么获取或写入具体某一行的信息
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式