而不是将二进制文件保存为Base64的开销,我想知道你是否可以直接将双字节二进制流存储到XML文件中,使用CDATA,或者将其注释掉,或者什么?
在XML文档中使用CDATA元素是否易受攻击?如果是这样,如果我们在XML文档中使用CDATA元素会发生什么?
我有一个字符串:
"<![CDATA [Lorem ipsum dolor sit amet, <a href="http://www.google.com">consectetur</a> siptum. adipiscing elit. Phasellus pulvinar hendrerit malesuada. Mauris eget ante nulla. Suspendisse tempus lorem id.]]>"
Run Code Online (Sandbox Code Playgroud)
使用jquery我需要提取内部的全部内容<![CDATA []]>.考虑将整个数据存储在字符串变量中.请帮我解决一下这个.
xpath非常适合解析xml文件,但它不适用于cdata标记内的数据:
<![CDATA[ Some Text <p>more text and tags</p>... ]]>
Run Code Online (Sandbox Code Playgroud)
我的解决方案:首先获取xml的内容并删除
"<![CDATA[" and "]]>".
Run Code Online (Sandbox Code Playgroud)
之后我会从xml文件中运行xpath"到达所有内容".有更好的解决方案吗?如果没有,我怎么能用正则表达式做?
我使用标准的.Net XmlSerializer来解决CDATA反序列化问题.
更新:我从外部系统获取XML,我不能影响它的格式,所以我不能将CData包含在一个单独的属性元素中.
序列化给出了:
<?xml version="1.0" encoding="utf-16"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><![CDATA[Hello, world!]]></MyClass>
Run Code Online (Sandbox Code Playgroud)
反序列化不会将对象恢复为原始状态.
这是正在序列化的类:
public class MyClass
{
string _data;
[XmlIgnore]
public string Data
{
get { return _data; }
set { _data = value; }
}
[XmlAnyElement]
public XmlCDataSection CData
{
get { return new XmlDataDocument().CreateCDataSection(Data); }
set { Data = value.Value; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是失败的测试:
[Test]
public void CData_as_inner_text_test()
{
MyClass item = new MyClass();
item.Data = "Hello, world!";
XmlSerializer serializer = new XmlSerializer(item.GetType());
string serialized;
using (StringWriter …Run Code Online (Sandbox Code Playgroud) 我想写一些包含空格字符的文本,例如newline和tabxml文件,所以我使用
Element element = xmldoc.createElement("TestElement");
element.appendChild(xmldoc.createCDATASection(somestring));
Run Code Online (Sandbox Code Playgroud)
但是当我在使用中读回来的时候
Node vs = xmldoc.getElementsByTagName("TestElement").item(0);
String x = vs.getFirstChild().getNodeValue();
Run Code Online (Sandbox Code Playgroud)
我得到一个没有新行的字符串了.
当我直接查看磁盘上的xml时,新行似乎得以保留.所以在读取xml文件时会出现问题.
我该如何保留换行符?
谢谢!
我有一个我正在抓的网站,其结构如下.我希望能够从CData块中获取信息.
我正在使用BeautifulSoup从页面中提取其他信息,所以如果解决方案可以使用它,那将有助于保持我的学习曲线,因为我是一个python新手.具体来说,我想了解隐藏在CData语句中的两种不同类型的数据.第一个只是文本我很确定我可以抛出一个正则表达式并得到我需要的东西.对于第二种类型,如果我可以将具有html元素的数据放入其自己的beautifulsoup中,我可以解析它.
我只是在学习python和beautifulsoup,所以我正在努力寻找能让我自己获得CData的魔法咒语.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Cows and Sheep
</title>
</head>
<body>
<div id="main">
<div id="main-precontents">
<div id="main-contents" class="main-contents">
<script type="text/javascript">
//<![CDATA[var _ = g_cow;_[7654]={cowname_enus:'cows rule!',leather_quality:99,icon:'cow_level_23'};_[37357]={sheepname_enus:'baa breath',wool_quality:75,icon:'sheep_level_23'};_[39654].cowmeat_enus = '<table><tr><td><b class="q4">cows rule!</b><br></br>
<!--ts-->
get it now<table width="100%"><tr><td>NOW</td><th>NOW</th></tr></table><span>244 Cows</span><br></br>67 leather<br></br>68 Brains
<!--yy-->
<span class="q0">Cow Bonus: +9 Cow Power</span><br></br>Sheep Power 60 / 60<br></br>Sheep 88<br></br>Cow Level 555</td></tr></table>
<!--?5695:5:40:45-->
';
//]]>
</script>
</div>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我已经看到了处理这个问题的帖子,但我仍然无法解决我的问题:
我有CDATA的XML,当我解析XML时,它包含CDATA(我不想要).
XML示例:
<mainnav>
<nav path="/" xmlpath="home.xml" key="footer" navigator="">
<display><![CDATA[Home]]></display>
<title><![CDATA[Home]]></title>
</nav>
<nav path="/nav1/" xmlpath="nav1.xml" key="primary" navigator="primary" iconid="0">
<display><![CDATA[Nav 1]]></display>
<title><![CDATA[Nav 1]]></title>
<overdesc><![CDATA[test nav 1]]></overdesc>
<sub path="/nav1/sub1/" xmlpath="nav1/sub1.xml" key="sub">
<display><![CDATA[sub 1<br />of nav 1]]></display>
<title><![CDATA[sub 1<br />of nav 1]]></title>
</sub>
</nav>
<nav path="/nav1/" xmlpath="nav2.xml" key="primary" navigator="primary" iconid="1">
<display><![CDATA[Nav 2]]></display>
<title><![CDATA[Nav 2]]></title>
<overdesc><![CDATA[test nav 2]]></overdesc>
<sub path="/nav2/sub1/" xmlpath="nabv2/sub1.xml" key="sub">
<display><![CDATA[sub 1<br />of nav 2]]></display>
<title><![CDATA[sub 1<br />of nav2]]></title>
</sub>
</nav>
</mainnav>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "site_xml/config.xml",
//contentType: "text/xml",
dataType: …Run Code Online (Sandbox Code Playgroud) 我在Orchestration的Message Assignment形状中设置元素的值.我正在使用XPATH函数来做到这一点.
该文本需要包含在CDATA部分中.这就是我尝试这样做的方式:
xpath(messageOut, "//Envelope/Body/MsgFFmt") = @"<![CDATA[" + _response + @"]]>";
Run Code Online (Sandbox Code Playgroud)
但是,BizTalk将其转义并且元素内的文本最终看起来像这样:
<MsgFFmt><![CDATA[response content goes here]]></MsgFFmt>
Run Code Online (Sandbox Code Playgroud)
我似乎无法在网上找到关于指示BizTalk我需要围绕我的_response字符串的CDATA部分的任何内容.有人可以帮忙吗?
谢谢
我有一个使用百里叶模板的页面,在使用内联脚本时,我在页面加载时遇到以下错误:
org.xml.sax.SAXParseException; lineNumber:270; columnNumber:85; 元素的内容必须由格式良好的字符数据或标记组成.
第270行的代码
<script type="text/javascript" >
window.jQuery || document.write("<script src='assets/js/jquery-2.0.3.min.js'>"+"<"+"/script>");
</script>
Run Code Online (Sandbox Code Playgroud)
我试过用document.write替换"<",">"符号< >,不再发生异常但是脚本不再加载了