14. august 2008 - 18:47
Der er
10 kommentarer og 1 løsning
Strengbehandling, pille en bestemt del ud
Hej Eksperter, Jeg står i en situation hvor jeg har noget xml der skal behandles. Sagen er den at jeg får nogen som ligner det her tilbage <xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4><node5>værdi</node5><node6>værdi</node6></xml> Det her xml bruger jeg i forbindelse med noget AJAX. Nu er det bare således at jeg gerne vil undlade at returnerer node3-6 hvis node 2 er F. Hvordan gør jeg lige det?
Annonceindlæg fra Kingston Technology
14. august 2008 - 18:49
#1
<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4><node5>værdi</node5><node6>værdi</node6></xml>
14. august 2008 - 18:49
#2
<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4> <node5>værdi</node5><node6>værdi</node6></xml>
14. august 2008 - 18:51
#3
altså så jeg ender op med <xml><node1>bla</node1><node2>F</node2></xml>
14. august 2008 - 18:51
#4
Det kan sikker laves med noget indexOf og substring men det paeneste maa vaere: laes fra Streng til Document test vaerdien af node2 hvis F slett node3-6 skriv fra Document til String
14. august 2008 - 19:06
#5
Hvis vi nu siger at String s="<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3> <node4>værdi</node4> <node5>værdi</node5><node6>værdi</node6></xml>";
14. august 2008 - 19:30
#6
Som arne_v skriver kan du godt gøre følgende: String str = "<xml><node1>bla</node1><node2>F</node2><node3>værdi</node3><node4>værdi</node4>"; if(str.contains("<node2>F</node2>")){ Scanner scan = new Scanner(str); str = scan.findWithinHorizon("<xml>[^\\Q<node3>\\E]*",0) + "<\\xml>"; }
14. august 2008 - 19:47
#7
XML maaden er: String s="<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4><node5>værdi</node5><node6>værdi</node6></xml>"; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(new StringReader(s))); if(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node2/text()").getNodeValue().equals("F")) { doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node3")); doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node4")); doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node5")); doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node6")); } OutputFormat fmt = new OutputFormat(); StringWriter sw = new StringWriter(); XMLSerializer ser = new XMLSerializer(sw, fmt); ser.serialize(doc); String s2 = sw.toString();
15. august 2008 - 06:08
#8
Det ser super ud. Tak
15. august 2008 - 09:52
#9
Det virker bare som det skal. Takker og bukker
15. august 2008 - 17:01
#10
Læg endelig et svar arne_v. Det er bare super cool
15. august 2008 - 17:35
#11
OK
Kurser inden for grundlæggende programmering