在我的应用程序中,我有以下代码将某些数据加密为字符串:
org.mule.module.launcher.DeploymentInitException: SAXParseException: cvc-complex
-type.2.4.a: Invalid content was found starting with element 'batch:execute'. On
e of '{"http://www.mulesoft.org/schema/mule/core":abstract-message-processor, "h
ttp://www.mulesoft.org/schema/mule/core":abstract-outbound-endpoint, "http://www
.mulesoft.org/schema/mule/core":abstract-mixed-content-message-processor, "http:
//www.mulesoft.org/schema/mule/core":response}' is expected.
at org.mule.module.launcher.application.DefaultMuleApplication.init(Defa
ultMuleApplication.java:197) ~[mule-module-launcher-3.7.0.jar:3.7.0]
at org.mule.module.launcher.artifact.ArtifactWrapper$2.execute(ArtifactW
rapper.java:62) ~[mule-module-launcher-3.7.0.jar:3.7.0]
at org.mule.module.launcher.artifact.ArtifactWrapper.executeWithinArtifa
ctClassLoader(ArtifactWrapper.java:129) ~[mule-module-launcher-3.7.0.jar:3.7.0]
at org.mule.module.launcher.artifact.ArtifactWrapper.init(ArtifactWrappe
r.java:57) ~[mule-module-launcher-3.7.0.jar:3.7.0]
at org.mule.module.launcher.DefaultArtifactDeployer.deploy(DefaultArtifa
ctDeployer.java:25) ~[mule-module-launcher-3.7.0.jar:3.7.0]
at org.mule.module.launcher.DefaultArchiveDeployer.guardedDeploy(Default
ArchiveDeployer.java:310) ~[mule-module-launcher-3.7.0.jar:3.7.0]
这就像我想要的那样。现在我想将该数据写入xml文件,如:
private string EncryptPermission(User user)
{
Encoding encoding = Encoding.ASCII;
Cryptography cryptography = CreateCryptography(user);
byte[] val = encoding.GetBytes(user.Permission.ToString());
byte[] encrypted = cryptography.Encrypt(val);
string result = encoding.GetString(encrypted);
return result;
}
目前我致电internal void WriteUser(User user)
{
XElement userElement = new XElement("user",
new XAttribute("id", user.UserId.ToString("N")),
new XElement("name", user.Username),
new XElement("password", user.Password),
new XElement("permission", EncryptPermission(user)));
XDocument document = GetDocument();
if (document.Root != null)
{
document.Root.Add(userElement);
SaveDocument(document);
}
}
我得SaveDocument
赞:
发生了'System.ArgumentException'类型的第一次机会异常 在System.Xml.dll
中附加信息:'',十六进制值0x06,是 无效的char。
(翻译自德语)
我该如何解决这个问题?我已经尝试使用Exception
和Converter.ToBase64String(..)
,但我得到一个例外,即数据太长了。
答案 0 :(得分:1)
加密产生字节,而不是所有字节都是有效字符,正如XML所预期的那样。你的0x06就是这样的一个。一种可能的解决方案是在写入XML之前将字节转换为Base64。 Base64仅使用有效字符,代价是增加一些大小:它使用四个字符来写三个字节。
查看C#Base64转换方法的Convert
类。
答案 1 :(得分:0)