如何屏蔽或替换XML中的值?



我有这个XML

<?xml version="1.0" encoding="UTF-8"?>
<TXLife xmlns="http://ACORD.org/Standards/Life/2" Version="2.22.00">
<TXLifeRequest>
	<OLifE Version="2.22.0">
		<Party id="BEB7-BDDC43FE3F01_10004">
			<PartyTypeCode tc="1">PT_PERSON</PartyTypeCode>
				<FullName>Gump,Forrest</FullName>
				<ResidenceState tc="58">USA_WI</ResidenceState>
				<Person id="D7329BB530E8_10304">
					<FirstName>Forrest</FirstName>
					<LastName>Gump</LastName>
				</Person>
		</Party>
	</OLifE>
</TXLifeRequest>
</TXLife>

我希望将FirstName值替换为No Name

这与数据屏蔽有关。

我正在尝试使用下面给定的代码访问节点,但它不起作用。

var testXML = XDocument.Load("C:\DataMask\P0500015703691806181259345440127.xml");
var nodePTCode = testXML.Descendants("Party").FirstOrDefault(cd => cd.Element("PartyTypeCode").Value == "PT_PERSON");

寻址元素时必须包含命名空间
同样对于XDocument,您必须从其Root属性开始。

XDocument xdoc = XDocument.Load("C:\DataMask\P0500015703691806181259345440127.xml");
XNamespace ns = "http://ACORD.org/Standards/Life/2";
XElement firstName = xdoc.Root.Descendants(ns + "FirstName").FirstOrDefault();
if (firstName != null) { firstName.Value = "No Name"; }

XML 将应用更新:

<TXLife xmlns="http://ACORD.org/Standards/Life/2" Version="2.22.00">
<TXLifeRequest>
<OLifE Version="2.22.0">
<Party id="BEB7-BDDC43FE3F01_10004">
<PartyTypeCode tc="1">PT_PERSON</PartyTypeCode>
<FullName>Gump,Forrest</FullName>
<ResidenceState tc="58">USA_WI</ResidenceState>
<Person id="D7329BB530E8_10304">
<FirstName>No Name</FirstName>
<LastName>Gump</LastName>
</Person>
</Party>
</OLifE>
</TXLifeRequest>
</TXLife>

编辑

如果适用,您还必须更新FullNamexml 元素以反映FirstName中的更改。

XElement lastName = xdoc.Root.Descendants(ns + "LastName").FirstOrDefault();
XElement fullName = xdoc.Root.Descendants(ns + "FullName").FirstOrDefault();
fullName.Value = String.Format("{0},{1}", (String)lastName, (String)firstName);

最新更新