0

変更したい値とタグ文字列があります。しかし、私のシナリオでは、xml 構造について確信が持てません。

次のような単純な機能を実行したい:

for tag.equals(tagValue){
   if found{
      oldTagText=newValue
   }
}

したがって、構造に関係なく、一致するすべてのタグが変更されます。誰でもこれを行う方法を知っていますか?

4

2 に答える 2

1

XSL ではなく Java で置き換えを行う場合は、StAX を参照してください: http://docs.oracle.com/javase/tutorial/jaxp/stax/index.html

(注: ほとんどの StAX のユースケースでは、StAX イテレーター API (イベントベース) を使用することをお勧めします。AFAIK です。)

于 2012-11-23T13:25:36.140 に答える
0

これを行う最も簡単な方法は SAX です。

    String xml = "<root><e1>xxx</e1></root>";
    XMLFilterImpl xmlReader = new XMLFilterImpl(
            XMLReaderFactory.createXMLReader()) {

        @Override
        public void startElement(String uri, String localName,
                String qName, Attributes atts) throws SAXException {
            super.startElement(uri, localName, tagName(qName), atts);
        }

        @Override
        public void endElement(String uri, String localName, String qName)
                throws SAXException {
            super.endElement(uri, localName, tagName(qName));
        }

        private String tagName(String qName) {
            if (qName.equals("e1")) {
                return "e2";
            }
            return qName;
        }
    };
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer t = tf.newTransformer();
    StringWriter s = new StringWriter();
    t.transform(new SAXSource(xmlReader, new InputSource(new StringReader(
            xml))), new StreamResult(s));
    System.out.println(s);
于 2012-11-23T14:08:46.970 に答える