16. september 2008 - 16:22
Der er
4 kommentarer og 1 løsning
Avanceret søg og erstat
Xml eksempel: <aaa>hej med dig</aaa> <bbb> <ccc>1</ccc> </bbb> Jeg skal ændre indholdet <ccc> tagét fra 1 til 2 hvis <aaa> taget slutter på 'dig'? Dette kan selvfølgelig laves med xslt og xpath ting og sager, men er der en hurtigere måde (evt. program) til den slags avancerede søg og erstat i xml filer.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
16. september 2008 - 16:59
#1
Det er nemt at programmere selv. Hvilke programmerings sprog kender du ?
17. september 2008 - 02:42
#2
Delphi, evt. Java eller C# :-)
17. september 2008 - 13:38
#3
Ikke specielt koent men foelgende Java ser ud til at virke: import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.bootstrap.DOMImplementationRegistry; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.LSOutput; import org.w3c.dom.ls.LSSerializer; public class Replace { public static void main(String[] args) throws Exception { // load DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("C:\\replace.xml"); // modify XPath xpath = XPathFactory.newInstance().newXPath(); Node n = (Node)xpath.evaluate("//all[contains(aaa,'dig') and substring-after(ccc,'dig')='']/bbb[ccc='1']/ccc/text()", doc.getDocumentElement(), XPathConstants.NODE); if(n != null) { n.setTextContent("2"); } // save DOMImplementation impl = DOMImplementationRegistry.newInstance().getDOMImplementation("XML 3.0"); DOMImplementationLS feature = (DOMImplementationLS)impl.getFeature("LS","3.0"); LSSerializer ser = feature.createLSSerializer(); LSOutput output = feature.createLSOutput(); output.setByteStream(new FileOutputStream("C:\\replace2.xml")); ser.write(doc, output); } } testet med: <all> <aaa>hej med dig</aaa> <bbb> <ccc>1</ccc> </bbb> </all>
17. september 2008 - 16:31
#4
Super enkelt egentlig, mange tak ... giv et svar.
17. september 2008 - 16:33
#5
ok
Kurser inden for grundlæggende programmering