使用sax解析器解析和修改xml字符串

我有一个XML文件,我需要在其中搜索特定的标签并更新它的值。 问题是,使用Sax解析器是“必须”。 我必须通过使用Sax Parser“only”找到这些标签,dom stax j4dom dom4j解析器不在考虑范围内。

我可以通过将我的xml文件转换为字符串并使用sax解析器解析它并通过StringBuilder对象追加新值来完成此任务吗? 会没事吗? 或者你会推荐什么?

这是一个有效的代码,只需添加缺少的导入。 它使用SAX并将user1更改为user2 。 如果您弄清楚它是如何工作的,再加上阅读SAX API,您可以对xml做任何事情。 请注意,在StAX诞生之前,SAX被认为是最有效的xml解析器

 public static void main(String[] args) throws Exception { String xml = "user1"; XMLReader xr = new XMLFilterImpl(XMLReaderFactory.createXMLReader()) { private String tagName = ""; @Override public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { tagName = qName; super.startElement(uri, localName, qName, atts); } public void endElement(String uri, String localName, String qName) throws SAXException { tagName = ""; super.endElement(uri, localName, qName); } @Override public void characters(char[] ch, int start, int length) throws SAXException { if (tagName.equals("name")) { ch = "user2".toCharArray(); start = 0; length = ch.length; } super.characters(ch, start, length); } }; Source src = new SAXSource(xr, new InputSource(new StringReader(xml))); Result res = new StreamResult(System.out); TransformerFactory.newInstance().newTransformer().transform(src, res); } 

如果时间不是考虑因素,那么SAX解析器并不是一个糟糕的选择。