我从XML中提取数据,一些标签以这种方式在CDATA中包含数据
<description><![CDATA[Changes (as compared to 8.17) include:
Features:
* Added a ‘Schema Optimizer’ feature. Based on “procedure analyse()” it will propose alterations to data types for a table based on analysis on what data are stored in the table. The feature is available from INFO tab/HTML mode. Refer to documentation for details.
* A table can now be added [...]]]>
</description>
Run Code Online (Sandbox Code Playgroud)
我已经在使用preq_match从描述标签中提取数据.那么如何从CDATA中提取数据?
当我使用linq检索xml时,<CDATA[[ ]]>删除了,这是我想要实现的.
但是当我保存文件时,<CDATA[[ ]]>变成 <CDATA[[ ]]>了xml文件.<CDATA[[ ]]>在保存之前我是否明确附加了给我相同的结果.
尝试附加<CDATA[[ ]]>但仍然给我相同的结果.
有没有其他方法可以<CDATA[[ ]]>在xml文件中显示它?
我Encoding.UTF8.GetBytes()在保存XDocument使用后用来写文件XDocument.Save(System.IO.StringWriter).
显然答案是否定的......对吗?我问的原因是因为我在XML中为Android应用程序定义了这个字符串:
<string name="foo"><![CDATA[<html><body><p>This%20is%20a%20test</p></body></html>]]></string>
Run Code Online (Sandbox Code Playgroud)
我对字符串的所有操作都是读取它,并在HTML视图中显示.我不会期望%20s被解释,但它们是.这是正确的行为,还是Android通常是错误的?
我正在将 html 作为字符串传递。我的目标是从具有所有适当节点的 html 创建一个新文档,以便我可以在我创建的文档上执行诸如调用 doc.getElementsByTagName 之类的操作,并使其按预期工作。我的代码的一个例子是here。
var doc = window.document.implementation.createDocument
('http://www.w3.org/1999/xhtml', 'html', null);
doc.getElementsByTagName('html')[0].innerHTML =
'<head><script>somejs</script>' +
'<script>var x = 5; var y = 2; var foo = x + y;</script>' +
'</head><body></body>';
var scripts = doc.getElementsByTagName('script');
console.log(scripts[0] + " code = " + scripts[0].innerHTML);
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
所以我的问题是:
A. 我如何处理诸如 < 之类的字符,当我尝试在将 innerHTML 设置为 B 时使用它们时会出现 DOM 异常 11。如何使文档正确解析脚本标签并将它们的代码放入其 innerHTML …
我有一个现有的 xml 文件,其中包含我想要在网站上显示的通知。片段如下:
<contents>
<item>
<![CDATA[
<a style="font-weight: bold;" href="http://engadget.com">Engadget</a>
]]>
</item>
<item>
<![CDATA[
<a style="font-weight: bold;" href="http://cnn.com">CNN</a>
]]>
</item>
</contents>
Run Code Online (Sandbox Code Playgroud)
我正在尝试打开此文档并向其中添加新的“项目”,但我不能:
foreach (string s in notifications)
{
XmlElement newElement = doc.CreateElement("item");
newElement.InnerXml = "<![CDATA[ " + s + " ]]>";
doc.DocumentElement.SelectNodes("/contents")[0].AppendChild(newElement);
}
Run Code Online (Sandbox Code Playgroud)
通知是我用来存储链接的列表。我收到的错误是:
字符数据中不允许使用“]]>”。
由于我显示通知的方式,通知需要包含 HTML。谢谢你们的观看,伙计们。
可能重复:
将NSXMLParser与CDATA一起使用
我NSXMLParser用来解析服务器上的xml数据.
当用户向另一个用户发送文本消息时,我的服务器正在使用CDATA标签来包装用户文本,因为用户文本可能会破坏xml结构.
我的问题是NSXMLParser知道如何自动处理CDATA吗?它是在NSXMLParser机制中构建的吗?
我搜索了一个答案,却找不到答案.
我有一个由服务器生成的长xml.我想使用xslt显示一些节点.
问题是:当我在浏览器上打开xml时,我得到:XML解析失败,XML解析失败:语法错误,编码中的非法字节序列
错误位于其中一个节点内的cdata内,<![CDATA[并以其结尾]]>
错误是:,和数百个字符一样.
根据我的理解,如果它在cdata中它应该忽略或逃避它,这不应该发生.
xml编码是utf8.
谢谢您的帮助.
我经常使用 Sublime Text 编辑 vQmod 代码。对于那些不知道的人来说,vQmod 是一个动态搜索/替换应用程序,它使用 XML 动态修改 OpenCart 中的核心文件。搜索位置和要添加的代码通常都包含在CDATA标签内。可以理解的是,所有语法突出显示规则都将CDATA标签内的任何内容视为未应用语言规则的纯文本块。但在这种情况下,其中包含的代码可以是 HTML、PHP、JavaScript 或内联 CSS。
有没有办法可以修改语法突出显示规则,以便 CDATA 标记中包含的文本仍将被评估为代码?
这是一个例子:
<operation>
<search position="after"><![CDATA[public function index()]]></search>
<add><![CDATA[
$data['examples'] = $this->model_extension_extension->getExamples();
]]>
</add>
</operation>
Run Code Online (Sandbox Code Playgroud)
代码<search>不太重要,但我希望其中的任何内容都<add><![CDATA[被]]></add>识别为 php。有时,这些是非常长的块代码,并且在这里突出显示正确的语法确实会有所帮助。
我正在尝试删除以下脚本中的CDATA包装器(内容必须由CDATA包装以传递XHTML验证):
<script id="tplTest" type="text/html">
//<![CDATA[
<p id="msg">Hello</p>
<p>Another test: <#= ddd.ArtID #></p>
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var strTmp = document.getElementById("tplTest").innerHTML;
var strNew = strTmp.replace(/[\/(\/!\[)\]CDATA]/g, "").replace(/[(\/\/\]\])]/g, "");
Run Code Online (Sandbox Code Playgroud)
除了开始/结束(<,>)标记之外,它最多删除CDATA标记:
<
<p id="msg">Hello<p>
<p>nother test: <#= ddd.rtI #><p>
>
Run Code Online (Sandbox Code Playgroud)
问:我应该如何修改正则表达式来进一步除去这些开头和结尾<,>标签?
大家好,
我知道每个人都喜欢正则表达式的问题,所以这是我的.我有一个XML树,其中一些节点包含CDATA.如何只返回包含数据的字符串?
让我们看一个例子
<xml>
<node>I'm plain text.</node>
<node><![CDATA[I'm text in cdata... and may contain html, <strong>yikes!</strong>]]></node>
</xml>
Run Code Online (Sandbox Code Playgroud)
会回来
I'm plain text. I'm text in cdata... and may contain html, yikes!
Run Code Online (Sandbox Code Playgroud)
我读过没有用常规语言解析不规则语言,但我确信这是可行的.你觉得伙计们怎么样?
谢谢,凯文
编辑: 这是一个需要快速而肮脏的解决方案来处理几行XML的问题.我对最初的拒绝感到惊讶,但是从进一步阅读(特别是后来提供的链接)我看到有经验的程序员知道应该尽可能避免的事情.活到老,学到老.谢谢.
我想获得以下输出:
<name><![CDATA[ SomeNameHere ]]></name>
Run Code Online (Sandbox Code Playgroud)
使用以下xslt:
<xsl:element name="name">
<xsl:cdata>
<xsl:value-of select="name"/>
</xsl:cdata>
</xsl:element>
Run Code Online (Sandbox Code Playgroud)
但是在编译时我得到以下异常:
'xsl:cdata' cannot be a child of the 'xsl:element' element.
Run Code Online (Sandbox Code Playgroud)
如何在xml节点中插入cdata元素呢?
谢谢.
<![CDATA [test]]>我得到了空白.
var dataNode=Ext.DomQuery.selectNode('data',xml);
console.log(dataNode.childNodes[0].nodeValue);
console.log(dataNode.nodeValue);
cdata ×13
xml ×10
html ×2
javascript ×2
regex ×2
xslt ×2
android ×1
dom ×1
innerhtml ×1
iphone ×1
linq ×1
nsxmlparser ×1
objective-c ×1
opencart ×1
php ×1
sublimetext ×1
sublimetext3 ×1
syntax-error ×1
urlencode ×1
vqmod ×1
xml-parsing ×1