Wie kann ich Format und XML-Verarbeitungsanweisungen mit Hilfe von Java StAX lesen?
Frage
Erstens, wie ich die XML-Verarbeitungsanweisung forma ist es:
<?processingInstructionName attribute="value" attribute2="value2"?>
StAX verwenden, möchte ich dann, es zu lesen, indem die XMLStreamConstants.PROCESSING_INSTRUCTION
Handling ( javadoc für diese beiden Methoden ist nicht sehr hilfreich.
- Ist die Formatierung der XML korrekt?
- Ist dies der richtige Weg, um zu gehen
Parsen Verarbeitungsanweisungen
mit dem StAX
XMLStreamReader
APIs? - Wie verwende ich
getPITarget()
undgetPIData()
auf mehrere Argumente zurückgeben?
Lösung
1.Is die XML korrekte Formatierung?
Ja , jedoch Sie beachten Sie, dass ein Verarbeitungsanweisung nicht über Attribute - nur Daten. Was aussieht wie Attribute sind Teil der Daten und einige Leute nennen sie „pseudo-attributes
“.
2.Is dies der richtige Weg, um das Parsen Verarbeitungsanweisungen zu gehen, um den StAX XMLStreamReader APIs?
Ja.
3.How verwende ich getPITarget () und getPIData () mehrere Argumente zurück?
Wenn durch „mehr Argumente“, um die möglicherweise mehr als ein Pseudo-Attribute in den Daten enthalten bedeuten, ist die Antwort, dass der Code die Daten analysieren muß (mit einigen Standard-String-Methoden wie die C # split()
und abrufen für alle Pseudo den Satz von Name-Wert-Paare -attributes.
Andere Tipps
Ich denke, dass dieser Begriff der Verarbeitungsanweisungen mit Attributen von einigen alten xml-Handbuch kommt. An einer Stelle gab es eine Diskussion Pi zu empfehlen zu ehren oder solche Strukturierung erfordern. Allerdings hat die offizielle XML-Spezifikation nie beauftragt oder auch eine solche Verwendung empfohlen.
Also im Grunde hast du Inhalte selbst analysieren -. Sie in einem beliebigen Format sein, aber wenn Sie wissen, dass es Attribut Schreibweise verwendet man es analysieren kann
Soweit ich weiß, keiner von Java XML-Parser oder Verarbeitungsprogramme unterstützen eine solche Nutzung, leider.
Obwohl Dimitre Antwort technisch korrekt ist, einige populären Bibliotheken analysieren jetzt Befehl Pseudo-Attribute Verarbeitung wie zu erwarten wäre. Die nachfolgenden Beispiele analysieren die folgende XML-Verarbeitungsanweisung den Wert für das href
pseduo-Attribut zu erhalten:
<?xml-stylesheet type="text/xsl" href="markdown.xsl"?>
JDOM2
Mit JDOM2 :
import org.jdom2.ProcessingInstruction;
import org.xml.sax.helpers.DefaultHandler;
public class ProcessingInstructionHandler extends DefaultHandler {
@Override
public void processingInstruction( final String target, final String data ) {
final ProcessingInstruction pi = new ProcessingInstruction( target, data );
System.out.println( pi.getPseudoAttributeValue( "href" ) );
}
}
Saxon
Mit Saxon :
import static net.sf.saxon.tree.util.ProcInstParser.getPseudoAttribute;
import org.xml.sax.helpers.DefaultHandler;
public class ProcessingInstructionHandler extends DefaultHandler {
@Override
public void processingInstruction( final String target, final String data ) {
System.out.println( getPseudoAttribute( data, "href" ) );
}
}