Как разделить текстовые узлы только для пробела от DOM перед сериализацией?

ваш matplotlib может работать в неинтерактивном режиме по какой-то причине. Я не уверен, как предотвратить это в вашей локальной конфигурации, но если вы добавите либо:

plt.ion()

или это:

matplotlib.interactive(True)

где-то в начале вашего сценария, это должно изменить поведение ваших сюжетов.

18
задан Marc Novakowski 10 June 2009 в 13:45
поделиться

2 ответа

Вы можете найти пустые текстовые узлы с помощью XPath, а затем удалить их программно следующим образом:

XPathFactory xpathFactory = XPathFactory.newInstance();
// XPath to find empty text nodes.
XPathExpression xpathExp = xpathFactory.newXPath().compile(
        "//text()[normalize-space(.) = '']");  
NodeList emptyTextNodes = (NodeList) 
        xpathExp.evaluate(doc, XPathConstants.NODESET);

// Remove each empty text node from document.
for (int i = 0; i < emptyTextNodes.getLength(); i++) {
    Node emptyTextNode = emptyTextNodes.item(i);
    emptyTextNode.getParentNode().removeChild(emptyTextNode);
}

Этот подход может быть полезен, если вам нужен больший контроль над удалением узлов, чем легко достигается с помощью шаблона XSL .

34
ответ дан 21 October 2019 в 05:29
поделиться

Попробуйте использовать следующий XSL и элемент strip-space для сериализации вашей модели DOM:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" omit-xml-declaration="yes"/>

  <xsl:strip-space elements="*"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

http://helpdesk.objects.com.au/java/how-do-i-remove-whitespace-from-an-xml-document

8
ответ дан 21 October 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: