2017-07-06 2 views
2

Ich muss validieren XML und XSD nicht sehr akzeptabel (Standard verwendet zu viele xsd: Sequenz und Trick mit xsd: Wahl macht Validierung zu akzeptabel (nicht sicher, das ist das richtige Wort))Befreien Sie sich von Textinhalt in XML

Also, gibt es eine gute Möglichkeit, diese

<?xml version="1.0" encoding="UTF-8"?> 
<bookstore> 
    <book category="cooking"> 
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
    </book> 
    <book category="children"> 
    <title lang="en">Harry Potter</title> 
    <author>J K. Rowling</author> 
    <year>2005</year> 
    <price>29.99</price> 
    </book> 
    <book category="web"> 
    <title lang="en">Learning XML</title> 
    <author>Erik T. Ray</author> 
    <year>2003</year> 
    <price>39.95</price> 
    </book> 
</bookstore> 

In diese

<?xml version="1.0" encoding="UTF-8"?> 
<bookstore> 
    <book category="cooking"> 
    <title lang="en"></title> 
    <author></author> 
    <year></year> 
    <price></price> 
    </book> 
    <book category="children"> 
    <title lang="en"></title> 
    <author></author> 
    <year></year> 
    <price></price> 
    </book> 
    <book category="web"> 
    <title lang="en"></title> 
    <author></author> 
    <year></year> 
    <price></price> 
    </book> 
</bookstore> 

auf Fenster mit python/java zu drehen/go? Es ist kein einmaliger Job, ich muss es automatisch tun

+0

Sie können einen Weg finden, um Ihr Problem mit Regex zu lösen, überprüfen Sie [dieses Thema] (https://stackoverflow.com/questions/7167279/regex-select-all-text-between-tags) –

Antwort

1

Das richtige Werkzeug für XML-Transformationen ist XSLT. Dieser ist tot leicht. In XSLT 3.0 ist es

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform version="3.0"> 
    <xsl:output indent="yes"/> 
    <xsl:mode on-no-match="shallow-copy"/> 
    <xsl:template match="text()"/> 
</xsl:stylesheet> 

sagte Sie eine Java-Lösung ist in Ordnung, so downloaden Saxon-HE 9.8 und führen dies als

java net.sf.saxon.Transform -s:in.xml -xsl:trans.xsl -o:out.xml 

Wenn Sie es vorziehen, eine XSLT 1.0 oder 2.0-Prozessor verwenden, können Sie ersetzen die xsl:mode Deklaration mit der Identitätsvorlagenregel, die leicht googled ist.

Verwandte Themen