标签: cdata

在其中读取带有]]的XML CDATA部分

我正在使用Javascript编写RSS阅读器XMLHttpRequest.

对于一些RSS Feeds,我没有遇到任何问题,但在某些情况下,xmlDocument.firstChild属性始终如此NULL

在尝试查看有效的XML和无效的XML之间的差异后,我发现以下是导致错误的原因.

<item>
    <description>
        <![CDATA[This is a description for a test [...]]]>
    </description>
</item>
Run Code Online (Sandbox Code Playgroud)

因为在这个描述标签中我有一个结束括号后跟CDATA的右括号导致我的错误,我用C#使用LINQ为相同的XML制作了一个代码,一切正常.

在CDATA的右括号之前的右括号引起了这种奇怪的行为.作为测试我尝试使用C#和LINQ读取相同的XML,一切正常.

然后我尝试在右括号之间添加一个空格,如下所示

<![CDATA[This is a description for a test [...] ]]>

它奏效了!

我的javascript代码

function LoadRSS() {
    http_request.onreadystatechange = function () { showContent(http_request); };
    http_request.open("GET", "./feeds/test.xml", true);
    http_request.send(false);
}


function showContent(http_request) {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            var parser = new DOMParser();
            var xml_doc = parser.parseFromString(http_request.responseText, "text/xml");
            alert(xml_doc.firstChild)
        }
        else {
            xml_doc = null; …
Run Code Online (Sandbox Code Playgroud)

javascript xml cdata

5
推荐指数
1
解决办法
4050
查看次数

innerHTML 将 CDATA 转换为注释

我正在尝试使用 javascript 将一些 HTML 插入到页面中,并且我插入的 HTML 包含 CDATA 块。

我发现在 Firefox 和 Chrome 中,CDATA 正在转换为注释。

HTML 不在我的控制之下,所以我很难避免使用 CDATA。

以下测试用例,当页面上有一个 id 为“test”的 div 时:

document.getElementById('test').innerHTML = '<![CDATA[foo]]> bar'
Run Code Online (Sandbox Code Playgroud)

导致以下 HTML 被应用到“测试”div:

<!--[CDATA[foo]]--> bar
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用javascript将包含CDATA的HTML逐字插入到文档中吗?

html javascript dom cdata

5
推荐指数
1
解决办法
3967
查看次数

如何改造&nbsp; 在XSLT中

我有一个以下xslt:

<span><xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;Some text]]></xsl:text></span>
Run Code Online (Sandbox Code Playgroud)

改造后我得到:

<span>&amp;nbsp;Some text</span>
Run Code Online (Sandbox Code Playgroud)

它被渲染为: 一些文字

我想渲染  作为空间角色.我已经尝试过将disable-output-escaping改为no,但它没有帮助.

感谢帮助.

html xslt cdata

5
推荐指数
2
解决办法
1万
查看次数

需要一个CDATA事件通知stax解析器的java

我接管了一个使用stax解析器的应用程序的维护,将许多记录的XML文件分解为单个记录以供进一步处理.为此目的使用这种类型的解析器在我看来是过度的,但我没有写它.

该应用程序现在遇到如下数据:

<name><![CDATA[A & B]]></name>
Run Code Online (Sandbox Code Playgroud)

我们当前的解析器返回begin'name'标记的事件.下一个事件是值为'A&B'的字符事件.

从Sun的网页上我发现了这个:


报告CDATA事件Streaming XML Parser中实现的javax.xml.stream.XMLStreamReader不报告CDATA事件.如果您的应用程序需要接收此类事件,请配置XMLInputFactory以设置以下特定于实现的report-cdata-event属性:

XMLInputFactory factory = XMLInptuFactory.newInstance();
factory.setProperty("report-cdata-event", Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)

我们使用的解析器不支持'report-cdata-event'属性.

我想找到一个报告这样一个事件的解析器,这样我就不必检查需要由CDATA构造保护的字符的每一段文本.

更新:

发布后我浏览了一些相关的问题,并提到'isCoalescing'属性; 记录它被设置为FALSE.

java stax cdata xml-parsing

5
推荐指数
2
解决办法
2866
查看次数

如何在 XML 中包含未解析的外部实体值?

我在这个例子中有一个 xml 语法错误:

<?xml version="1.0"?>
<!DOCTYPE foo [
    <!ENTITY rules SYSTEM "file://data.txt">
]>
<extract>
    <data>&rules;</data>
</extract>
Run Code Online (Sandbox Code Playgroud)

其中 data.txt 包含:

1    <15024
2    >15023
Run Code Online (Sandbox Code Playgroud)

但当然我有语法错误,因为文本文件( < > )中有 wml 特殊字符。那么如何将这些数据包含为未解析的数据呢?

我希望有这样的结果:

<?xml version="1.0"?>
<extract>
    <data><![CDATA[1    <15024
2    >15023]]></data>
</extract>
Run Code Online (Sandbox Code Playgroud)

xml include cdata

5
推荐指数
1
解决办法
1158
查看次数

解析XML CDATA块

我正在尝试从网站librarything.com解析XML文件(使用NSXMLParser).这是我解析过的第一个文件,但在大多数情况下它似乎相当直接.尝试解析CDATA块时出现问题; 方法解析器:foundCDATA:没有被调用,我无法理解为什么.我知道我的解析器设置正确,因为解析器:foundCharacters:方法工作正常.我试图解析的XML数据看起来像这样http://www.librarything.com/services/rest/1.1/?method=librarything.ck.getwork&isbn=030788743X&apikey=d231aa37c9b4f5d304a60a3d0ad1dad4并且CDATA块出现在具有属性的元素内名称"描述".

任何有关为什么不调用该方法的帮助将不胜感激!

编辑:我在描述CDATA块上运行了解析器:foundCharacters:方法,它返回"<".我假设这意味着解析器没有正确地看到CDATA标签.我可以做些什么来解决这个问题吗?

xml parsing objective-c cdata nsxmlparser

5
推荐指数
1
解决办法
1823
查看次数

XSLT将元素从源复制到CDATA部分

我正在将简单的SOAP XML消息转换为更加扩展的SOAP XML消息.我几乎可以使用它,但我无法解决最后两个问题.我的问题是:

  1. 元素后面的所有元素都应该在CDATA部分中.我试图使用'cdata-section-elements',但无法使其正常工作.
  2. 元素应该是这样的

我的源XML文件:

<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header/>
  <SOAP-ENV:Body>
    <test>
      <element1>123</element1>
      <element2>123</element2>
    </test>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

我的XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" exclude-result-prefixes="fn xs SOAP-ENV">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />

<!-- Special rule to match the document root only -->
<xsl:template match="/*">
    <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
        <xsl:namespace name="a" select="'http://www.w3.org/2005/08/addressing'"/>
        <xsl:apply-templates select="@*|node()"/>
    </s:Envelope>
</xsl:template>

<!-- Expand soap header -->
<xsl:template match="SOAP-ENV:Header">
    <xsl:element name="s:{local-name()}" namespace="http://www.w3.org/2003/05/soap-envelope">
        <xsl:element name="a:Action" namespace="http://www.w3.org/2005/08/addressing">
            <xsl:attribute name="s:mustUnderstand" namespace="http://www.w3.org/2003/05/soap-envelope">1</xsl:attribute>
            <xsl:text>http://www.ortec.com/CAIS/IApplicationIntegrationService/SendMessage</xsl:text>
        </xsl:element>
    </xsl:element>
</xsl:template>

<!-- …
Run Code Online (Sandbox Code Playgroud)

xml xslt soap namespaces cdata

5
推荐指数
1
解决办法
7152
查看次数

使用XSLT中的条件计数记录

我有一个这种结构的xml:

<emails>
<record>
    <field name="host"><![CDATA[yahoo]]></field>
    <field name="user"><![CDATA[abc]]></field>
</record>
<record>
    <field name="host"><![CDATA[gmail]]></field>
    <field name="user"><![CDATA[abc]]></field>
</record>
<record>
    <field name="host"><![CDATA[yahoo]]></field>
    <field name="user"><![CDATA[cdx]]></field>
</record>
</emails>
Run Code Online (Sandbox Code Playgroud)

并且,我想计算host = yahoo的记录数.我知道我需要使用count(),但我无法弄清楚如何.

xml xslt count cdata conditional-statements

5
推荐指数
1
解决办法
1万
查看次数

如何使用 ElementTree python 在 xml 解析器中处理 CDATA?

我刚开始使用 python 并尝试使用 ElementTree 解析 xml 文件。但问题是我有一个带有CDATA 的标签,它在tree.write之后被删除

所以基本上我有这个标签

<content><![CDATA[eclipse.ver=1&encoding/ <project>=UTF-8${line.sep}]]></content>
Run Code Online (Sandbox Code Playgroud)

这是更改为

<content>eclipse.ver=1&encoding/&lt;project&gt;=UTF-8${line.sep}</content>
Run Code Online (Sandbox Code Playgroud)

我试过谷歌,但不是很有帮助。那么任何人都可以帮助我,我怎样才能在标签中获得完全相同的内容?

python xml cdata elementtree xml-parsing

5
推荐指数
1
解决办法
2605
查看次数

如何使用 python 请求和 bs4 (BeautifulSoup) 模块使用 cookie 和 javascript“javax.faces.ViewState”CDATA 在 .jsf 网站中进行网页抓取?

我想自动从该网站提取数据:

\n

http://www.snirh.gov.br/hidroweb/publico/medicoes_historicas_abas.jsf

\n

提取我想要的数据应遵循的步骤的说明:

\n

从上面的 url 开始,单击“S\xc3\xa9ries Hist\xc3\xb3ricas”。您应该看到一个页面,其中包含带有一些输入的表单。就我而言,我只需要在“C\xc3\xb3digo da Esta\xc3\xa7\xc3\xa3o”输入中输入车站代码。假设电台代码是 938001,插入该代码并点击“Consultar”。现在您应该看到很多复选框。选中“Selecionar”下面的一项,该选项将选中所有复选框。假设我不需要各种数据,我想要降雨率和流量,我只选中“Chuva”下面的复选框和“Vaz\xc3\xa3o”下面的另一个复选框。之后需要选择要下载的文件类型,选择“Arquivo Texto (.TXT)”,这是.txt格式。之后需要生成文件,为此单击“Gerar Arquivo”。之后就可以下载文件,只需单击“Baixar Arquivo”即可。

\n

注意:该网站目前版本为v1.0.0.12,以后可能会有所不同。

\n

我有一个车站代码列表。想象一下,这些操作执行超过 1000 次会有多糟糕?!我想自动化这个!

\n

巴西的许多人一直在尝试从该网站自动提取数据。我发现的一些:

\n

非常旧的:https://www.youtube.com/watch?v =IWCrC0MlasQ

\n

其他:\n https://pt.stackoverflow.com/questions/60124/gerar-e-baixar-links-programaticamente/86150#86150

\n

https://pt.stackoverflow.com/questions/282111/r-download-de-dados-do-portal-hidroweb

\n

我发现的早期尝试,但这也不起作用,因为该网站已更改: https: //github.com/duartejr/pyHidroWeb

\n

所以很多人都需要这个,并且由于网站的更新,上述解决方案都没有更有效。

\n

我不想使用 selenium,与使用 requests 库的解决方案相比,它很慢,并且需要一个接口。

\n

我的尝试:

\n
#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nfrom bs4 import BeautifulSoup\nimport requests\nfrom urllib import parse\n\n\nURL = \'http://www.snirh.gov.br/hidroweb/publico/apresentacao.jsf\'\n\ns = requests.Session()\n\nr = s.get(URL)\n\nJSESSIONID = s.cookies[\'JSESSIONID\']\n\nsoup = BeautifulSoup(r.content, "html.parser")\n\njavax_faces_ViewState = soup.find("input", {"type": "hidden", "name":"javax.faces.ViewState"})[\'value\']\n\n\nd = {}\nd[\'menuLateral:menuForm\'] …
Run Code Online (Sandbox Code Playgroud)

python jsf cdata web-scraping python-requests

5
推荐指数
1
解决办法
4396
查看次数