我在C#中创建xml,并希望添加Namespace和Declaration。我的xml如下:
XNamespace ns = "http://ab.com//abc";
XDocument myXML = new XDocument(
new XDeclaration("1.0","utf-8","yes"),
new XElement(ns + "Root",
new XElement("abc","1")))
这将在根级别和子元素abc级别添加xmlns=""
。
<Root xmlns="http://ab.com/ab">
<abc xmlns=""></abc>
</Root>
但我想只在Root级别而不是像下面的子级别那样:
<Root xmlns="http://ab.com/ab">
<abc></abc>
</Root>
以及如何在顶部添加声明,我的代码在运行后未显示声明。
请帮我把完整的xml作为
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Root xmlns="http://ab.com/ab">
<abc></abc>
</Root>
答案 0 :(得分:0)
您需要在子元素中使用相同的命名空间:
XDocument myXML = new XDocument(
new XDeclaration("1.0","utf-8","yes"),
new XElement(ns + "Root",
new XElement(ns + "abc", "1")))
如果您只使用"abc"
,则会转换为没有命名空间的XName
。然后,这会导致添加xmlns=""
属性,因此abc
的完全限定元素名称将被解析。
通过将名称设置为ns + "abc"
,转换为字符串时将添加xmlns
属性,因为http://ab.com/ab
的默认命名空间是从Root
继承的。
如果你想简单地“继承”命名空间,那么你将无法以这种流畅的方式做到这一点。您已使用父元素的命名空间创建XName
,例如:
var root = new XElement(ns + "Root");
root.Add(new XElement(root.Name.Namespace + "abc", "1"));
关于声明,XDocument
在调用ToString
时不包含此内容。如果您使用Save
来撰写Stream
,TextWriter
,或者如果您提供的XmlWriter
OmitXmlDeclaration = true
XmlWriterSettings
StringWriter
1}}。
如果您想获取字符串,this question会使用require(pacman)
pacman::p_load(psych)
#using the Harman 24 mental tests,a built-in dataset
res <- fa(Harman74.cor$cov,4,rotate="promax", SMC=FALSE, fm="minres")
struc <- as.matrix(res$Structure)
struc2 <- ifelse(struc < 0.3, NA, struc)
#write to CSV
write.csv(struc2,"fa_all_rounded_promax.csv",row.names=T)
获得一个漂亮的扩展方法的答案。
答案 1 :(得分:0)
在您创建的所有元素上使用命名空间:
String input = "0:13:13 - ID:( id ) / Name:( name ) / IP ( 177.22.3.4) Memory Function Code Error ( 1 )( 267 354 24 )( 12 15 5 )";
Matcher m = Pattern.compile("([\\d\\:]+).*ID:.*\\((.+)\\).*Name:\\((.+?)\\).*?IP \\((.+?)\\)(.+)").matcher(input);
while(m.find()){
String date = m.group(1).trim();
String id = m.group(2).trim();
String name = m.group(3).trim();
String ip = m.group(4).trim();
String desc = m.group(5).trim();
System.out.println("Date: " + date);
System.out.println("ID: " + id);
System.out.println("Name: " + name);
System.out.println("IP: " + ip);
System.out.println("Desc: " + desc);
}