В основном я создал текстовый документ, чтобы проверить, как синтаксический анализ в тарифах XML. Я сделал:Слова предложения, появляющиеся в отдельных узлах, Elementtree
import xml.etree.ElementTree
import zipfile as zf
z = zf.ZipFile("INTRODUCTION.docx")
doc_xml = z.open("word/document.xml")
tree = ET.parse(doc_xml)
NAMESPACE_PREFIXES = {
'w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'
}
text_elements = [element for element in tree.iter() if element.tag ==
'{' + NAMESPACE_PREFIXES['w'] + '}t']
for node in text_elements:
print node.text
Префиксы пространства имен должны позаботиться об этих ссылках, чтобы они игнорировались. Node.text отпечатались как:
INTRODUCTION
This is a test document for xml
.
Lets
see how this works.
Conclusion
It should hopefully
..
В моем оригинальном документе, Lets see how this works
поставляется в одной строке, так же, я вижу торможений одного и того же предложения появляются в отдельных узлах (как «..») , Как это решить? Вот код XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 wp14">
<w:body>
<w:p w:rsidR="00470EEF" w:rsidRDefault="00456755"><w:pPr><w:rPr><w:b/></w:rPr></w:pPr><w:r w:rsidRPr="00456755"><w:rPr><w:b/></w:rPr><w:t>INTRODUCTION</w:t></w:r></w:p>
<w:p w:rsidR="00456755" w:rsidRDefault="00456755"><w:r w:rsidRPr="00456755"><w:t>This is a test document for xml</w:t></w:r><w:r><w:t>.</w:t></w:r></w:p>
<w:p w:rsidR="00456755" w:rsidRDefault="00456755"><w:proofErr w:type="spellStart"/><w:proofErr w:type="gramStart"/><w:r><w:t>Lets</w:t></w:r><w:proofErr w:type="spellEnd"/><w:proofErr w:type="gramEnd"/><w:r><w:t xml:space="preserve"> see how this works.</w:t></w:r></w:p>
<w:p w:rsidR="00456755" w:rsidRDefault="00456755"/>
<w:p w:rsidR="00456755" w:rsidRDefault="00456755"/>
<w:p w:rsidR="00456755" w:rsidRDefault="00456755"><w:pPr><w:rPr><w:b/></w:rPr></w:pPr><w:r w:rsidRPr="00456755"><w:rPr><w:b/></w:rPr><w:t>Conclusion</w:t></w:r></w:p>
<w:p w:rsidR="00456755" w:rsidRPr="00456755" w:rsidRDefault="00456755"><w:r w:rsidRPr="00456755"><w:t>It should hopefully</w:t></w:r><w:r><w:t>..</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p>
<w:sectPr w:rsidR="00456755" w:rsidRPr="00456755"><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="708" w:footer="708" w:gutter="0"/><w:cols w:space="708"/><w:docGrid w:linePitch="360"/></w:sectPr>
</w:body>
</w:document>
Я заметил, что-то вроде w:type="spellStart"
и "grasmStart"
который является причиной, почему Lets
появляется в другом узле. Есть ли способ взглянуть на это?
спасибо, не могли бы вы объяснить, что на самом деле происходит, и как это фиксирует это ..? –
@Swordy, я думаю, что редактировал ответ (добавив объяснение), пока вы комментировали. Повторите ответ. – falsetru
@Swordy, для выражения, переданного 'findall', см. Документацию' 'xml.etree.ElementTree' - XPath Support] (https://docs.python.org/2/library/xml.etree.elementtree.html # XPath-поддержка). – falsetru