Segítő módszerek az Aspose.Words for Java tartalom kinyeréséhez
Bevezetés az Aspose.Words for Java tartalom kinyerésére szolgáló segédmódszerekbe
Az Aspose.Words for Java egy hatékony könyvtár, amely lehetővé teszi a fejlesztők számára, hogy programozottan dolgozzanak Word dokumentumokkal. A Word-dokumentumokkal végzett munka során az egyik gyakori feladat a tartalom kinyerése belőlük. Ebben a cikkben bemutatunk néhány segédmódszert a tartalom hatékony kibontásához az Aspose.Words for Java használatával.
Előfeltételek
Mielőtt belemerülnénk a kódpéldákba, győződjön meg arról, hogy az Aspose.Words for Java telepítve van, és be van állítva a Java projektben. Letöltheti innenitt.
Segítő 1. módszer: Bekezdések kibontása stílus szerint
public static ArrayList<Paragraph> paragraphsByStyleName(Document doc, String styleName) {
// Hozzon létre egy tömböt a megadott stílusú bekezdések összegyűjtéséhez.
ArrayList<Paragraph> paragraphsWithStyle = new ArrayList<Paragraph>();
NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
// Nézze meg az összes bekezdést, hogy megtalálja azokat, amelyek a megadott stílusúak.
for (Paragraph paragraph : (Iterable<Paragraph>) paragraphs) {
if (paragraph.getParagraphFormat().getStyle().getName().equals(styleName))
paragraphsWithStyle.add(paragraph);
}
return paragraphsWithStyle;
}
Ezzel a módszerrel kivonhatja azokat a bekezdéseket, amelyeknek meghatározott stílusa van a Word-dokumentumban. Ez akkor hasznos, ha meghatározott formázással, például címsorokkal vagy idézőjelekkel szeretne tartalmat kivonni.
Segítő 2. módszer: Tartalom kinyerése csomópontok szerint
public static ArrayList<Node> extractContentBetweenNodes(Node startNode, Node endNode, boolean isInclusive) {
// Először ellenőrizze, hogy az ehhez a metódushoz átadott csomópontok használhatók-e.
verifyParameterNodes(startNode, endNode);
// Hozzon létre egy listát a kibontott csomópontok tárolására.
ArrayList<Node> nodes = new ArrayList<Node>();
// Ha bármelyik jelölő egy megjegyzés része, beleértve magát a megjegyzést is, mozgatnunk kell a mutatót
// továbbítja a CommentRangeEnd csomópont után található megjegyzés csomóponthoz.
if (endNode.getNodeType() == NodeType.COMMENT_RANGE_END && isInclusive) {
Node node = findNextNode(NodeType.COMMENT, endNode.getNextSibling());
if (node != null)
endNode = node;
}
// Jegyezze fel a módszernek átadott eredeti csomópontokat, hogy szükség esetén feloszthassa a jelölőcsomópontokat.
Node originalStartNode = startNode;
Node originalEndNode = endNode;
//Blokkszintű csomópontok (bekezdések és táblázatok) alapján bontsa ki a tartalmat. Keresse meg őket a szülőcsomópontokon.
// Az első és az utolsó csomópont tartalmát felosztjuk, attól függően, hogy a marker csomópontok soron belül vannak-e.
startNode = getAncestorInBody(startNode);
endNode = getAncestorInBody(endNode);
boolean isExtracting = true;
boolean isStartingNode = true;
// Az aktuális csomópont, amelyet a dokumentumból kinyerünk.
Node currNode = startNode;
// Kezdje el a tartalom kinyerését. Az összes blokkszintű csomópont feldolgozása, és az első felosztása
// és szükség esetén az utolsó csomópontokat, így a bekezdésformázás megmarad.
// Ez a módszer egy kicsit bonyolultabb, mint egy hagyományos elszívó, amit figyelembe kell vennünk
// a kibontásban soron belüli csomópontok, mezők, könyvjelzők stb. használatával, hogy hasznos legyen.
while (isExtracting) {
// Másolat beszerzéséhez klónozza az aktuális csomópontot és gyermekeit.
Node cloneNode = currNode.deepClone(true);
boolean isEndingNode = currNode.equals(endNode);
if (isStartingNode || isEndingNode) {
// Minden jelölőt külön kell feldolgoznunk, ezért inkább adja át egy másik metódusnak.
// A csomóponti indexek megtartásához először az Endet kell feldolgozni.
if (isEndingNode) {
// !isStartingNode: ne adja hozzá kétszer a csomópontot, ha a jelölők ugyanazok a csomópontok.
processMarker(cloneNode, nodes, originalEndNode, currNode, isInclusive,
false, !isStartingNode, false);
isExtracting = false;
}
// feltételes feltételeknek külön kell lenniük, mivel a blokkszintű kezdő- és végjelzők ugyanazok a csomópontok lehetnek.
if (isStartingNode) {
processMarker(cloneNode, nodes, originalStartNode, currNode, isInclusive,
true, true, false);
isStartingNode = false;
}
} else
// A csomópont nem kezdő vagy végjelző, egyszerűen adja hozzá a másolatot a listához.
nodes.add(cloneNode);
// Lépjen a következő csomópontra, és bontsa ki. Ha a következő csomópont nulla,
// a többi tartalom egy másik részben található.
if (currNode.getNextSibling() == null && isExtracting) {
// Ugrás a következő szakaszra.
Section nextSection = (Section) currNode.getAncestor(NodeType.SECTION).getNextSibling();
currNode = nextSection.getBody().getFirstChild();
} else {
// Ugrás a test következő csomópontjára.
currNode = currNode.getNextSibling();
}
}
// A szövegközi könyvjelzőket tartalmazó móddal való kompatibilitás érdekében adja hozzá a következő bekezdést (üres).
if (isInclusive && originalEndNode == endNode && !originalEndNode.isComposite())
includeNextParagraph(endNode, nodes);
// Állítsa vissza a csomópontokat a csomópontjelölők közé.
return nodes;
}
Ez a módszer lehetővé teszi a tartalom kinyerését két megadott csomópont között, legyenek azok bekezdések, táblázatok vagy bármely más blokkszintű elem. Különféle forgatókönyveket kezel, beleértve a soron belüli jelölőket, mezőket és könyvjelzőket.
Segítő 3. módszer: Új dokumentum létrehozása
public static Document generateDocument(Document srcDoc, ArrayList<Node> nodes) throws Exception {
Document dstDoc = new Document();
// Távolítsa el az első bekezdést az üres dokumentumból.
dstDoc.getFirstSection().getBody().removeAllChildren();
// Importálja az egyes csomópontokat a listából az új dokumentumba. Tartsa meg a csomópont eredeti formázását.
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
for (Node node : nodes) {
Node importNode = importer.importNode(node, true);
dstDoc.getFirstSection().getBody().appendChild(importNode);
}
return dstDoc;
}
Ez a módszer lehetővé teszi új dokumentum létrehozását a csomópontok listájának a forrásdokumentumból történő importálásával. Megőrzi a csomópontok eredeti formázását, így hasznos lehet új, meghatározott tartalmú dokumentumok létrehozásához.
Következtetés
A Word dokumentumokból való tartalom kinyerése számos dokumentumfeldolgozási feladat döntő része lehet. Az Aspose.Words for Java hatékony segédmetódusokat kínál, amelyek leegyszerűsítik ezt a folyamatot. Akár stílus szerint, akár tartalom szerint kell bekezdéseket kivonnia a csomópontok között, vagy új dokumentumokat kell létrehoznia, ezek a módszerek segítenek hatékonyan dolgozni a Word-dokumentumokkal a Java-alkalmazásokban.
GYIK
Hogyan telepíthetem az Aspose.Words for Java programot?
Az Aspose.Words for Java telepítéséhez letöltheti az Aspose webhelyéről. Látogatásitt hogy megszerezze a legújabb verziót.
Kivonhatok tartalmat egy Word-dokumentum meghatározott szakaszaiból?
Igen, az ebben a cikkben említett módszerekkel kinyerhet tartalmat egy Word-dokumentum adott szakaszaiból. Egyszerűen adja meg a kibontandó szakaszt meghatározó kezdő és záró csomópontokat.
Az Aspose.Words for Java kompatibilis a Java 11-gyel?
Igen, az Aspose.Words for Java kompatibilis a Java 11 és újabb verzióival. Probléma nélkül használhatja Java-alkalmazásaiban.
Testreszabhatom a kivont tartalom formázását?
Igen, testreszabhatja a kivont tartalom formázását az importált csomópontok módosításával a generált dokumentumban. Az Aspose.Words for Java kiterjedt formázási lehetőségeket kínál az Ön igényeinek kielégítésére.
Hol találok további dokumentációt és példákat az Aspose.Words for Java-hoz?
Az Aspose.Words for Java-hoz átfogó dokumentációt és példákat találhat az Aspose webhelyén. Látogatáshttps://reference.aspose.com/words/java/ részletes dokumentációért és forrásokért.