我有一个XML字符串,其中包含要屏蔽的某些值。我还有一个黑名单列表,其中包含要屏蔽的元素或属性的名称。如何使用Linq做到这一点?
var BlackList=new List<string>{"ssn", "dateofbirth"};
var xml=@"<Rows><Row><SSN>123-12-1234</SSN><Address>123 Somewhere Street</Address><DateOfBirth>12-12-2012</DateOfBirth></Row><Row><SSN value=""123-12-1234""/><Address value=""123 Somewhere Street""/><DateOfBirth value=""12-12-2012""/></Row></Rows>";
结果集如下所示:
"<Rows><Row><SSN>RemovedForSecurity</SSN><Address>123 Somewhere Street</Address><DateOfBirth>RemovedForSecurity</DateOfBirth></Row><Row><SSN value="RemovedForSecurity"/><Address value="123 Somewhere Street"/><DateOfBirth value="RemovedForSecurity"/></Row></Rows>"
参考方案
首先,对所有实际的XML使用LINQ to XML。您以字符串开头并以字符串结尾的事实是偶然的:您实际上是在尝试处理XML文档。在那时,这相当容易:
var redactedElements = new HashSet<XName>
{
"SSN",
"CreditCard"
};
var redactedAttributes = new HashSet<XName>
{
"dateofbirth",
...
};
var elements = doc.Descendants()
.Where(x => redactedElements.Contains(x.Name))
.ToList();
foreach (var element in elements)
{
element.Value = "RemovedForSecurity";
}
var attributes = doc.Descendants()
.Attributes()
.Where(x => redactedAttributes.Contains(x.Name))
.ToList();
foreach (var attribute in attributes)
{
attribute.Value = "RemovedForSecurity";
}
编辑:不区分大小写,您将保留不区分大小写的本地名称列表:
var redactedElements = new HashSet<string>(StringEqualityComparer.OrdinalIgnoreCase);
{
"SSN",
"CreditCard"
};
var elements = doc.Descendants()
.Where(x => redactedElements.Contains(x.Name.LocalName))
.ToList();
// Ditto for the attributes
不过,如果您指定确切的名称,IMO会更好。
Div单击与单选按钮相同吗? - php有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date…
故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…
将python scikit学习模型导出到pmml - python我想将python scikit-learn模型导出到PMML。哪个python软件包最合适?我阅读了有关Augustus的内容,但是我无法使用scikit-learn模型找到任何示例。 python大神给出的解决方案 SkLearn2PMML是 JPMML-SkLearn命令行应用程序周围的薄包装。有关受支持的Scikit-Learn Estimator和…
如何使用PHP从动态输入字段捕获数组值? - javascript我正在编写一个在线时间跟踪网页,允许用户将学习时间输入该系统。用户将首先输入名称,然后根据日期输入学习时间。一天中可能会有多个学习时间。以下是我第一页的编码,<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"…
SOAPFaultException部署在Tomcat上时,但在GlassFish中工作正常 - java朋友们,我一直在尝试很多,阅读了很多论坛,但无法理解为什么出现此问题。我使用契约优先方法创建了一个Jax-WS WebService。创建WSDL和XSD,然后使用wsimport工具生成其余工件,为SEI提供实现。将WebService应用程序部署到Eclipse Helios中的GlassFish(Glassfish适配器和Eclipse中安装的插件)。…