我一直在使用第三方基于Java的REST Web服务,它返回一个xmlNodes数组.
xmlNode []重新呈现一个对象,我试图找出在对象中反序列化xmlNode []的最佳方法?是首先建立一个xmlDocument和Deserialize?
谢谢
我有一个XML(这正是它的样子):
<PolicyChangeSet schemaVersion="2.1" username="" description="">
<Attachment name="" contentType="">
<Description/>
<Location></Location>
</Attachment>
</PolicyChangeSet>
Run Code Online (Sandbox Code Playgroud)
这是在用户的机器上.
我需要为每个节点添加值:用户名,描述,附件名称,内容类型和位置.
这是我到目前为止:
string newValue = string.Empty;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filePath);
XmlNode node = xmlDoc.SelectSingleNode("/PolicyChangeSet");
node.Attributes["username"].Value = AppVars.Username;
node.Attributes["description"].Value = "Adding new .tiff image.";
node.Attributes["name"].Value = "POLICY";
node.Attributes["contentType"].Value = "content Typeeee";
//node.Attributes["location"].InnerText = "zzz";
xmlDoc.Save(filePath);
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
给出以下XML:
<current>
<login_name>jd</login_name>
</current>
<people>
<person>
<first>John</first>
<last>Doe</last>
<login_name>jd</login_name>
</preson>
<person>
<first>Pierre</first>
<last>Spring</last>
<login_name>ps</login_name>
</preson>
</people>
Run Code Online (Sandbox Code Playgroud)
如何从当前/登录匹配器中获取"John Doe"?
我尝试了以下方法:
<xsl:template match="current/login_name">
<xsl:value-of select="../people/first[login_name = .]"/>
<xsl:text> </xsl:text>
<xsl:value-of select="../people/last[login_name = .]"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud) 我有一个XML节点,其值是一个空格.例:
<sampleNode> </sampleNode>
Run Code Online (Sandbox Code Playgroud)
我正在使用Serializer从XML文档中获取数据以将其存储在对象中.现在,我面临的问题是:如果XML节点值只包含空格,就像上面的示例节点一样,序列化程序将其解释为string.Empty.
我怎么能克服这个?我需要得到实际的空白区域,即"".谢谢你!
我用一个节点创建了一个基本的XmlDocument:
XmlDocument bigDoc = new XmlDocument();
bigDoc.LoadXml("<Request></Request>");
Run Code Online (Sandbox Code Playgroud)
我正在获取另一个我想在<Request>节点内插入的XmlDocument .它对我不起作用:
XmlNode requestNode = bigDoc.FirstChild;
requestNode.AppendChild(anotherXMLDocument);
Run Code Online (Sandbox Code Playgroud)
它引发了一个例外.
如何在另一个XmlDocument节点中插入XmlDocument?
<Sections>
<Classes>
<Class>VI</Class>
<Class>VII</Class>
</Classes>
<Students>
<Student>abc</Student>
<Student>def</Student>
</Students>
</Sections>
Run Code Online (Sandbox Code Playgroud)
我必须遍历Classes才能将'Class'变成一个字符串数组.我还必须循环"学生",让'学生'进入一系列字符串.
XDocument doc.Load("File.xml");
string str1;
foreach(XElement mainLoop in doc.Descendants("Sections"))
{
foreach(XElement classLoop in mainLoop.Descendants("Classes"))
str1 = classLoop.Element("Class").Value +",";
//Also get Student value
}
Run Code Online (Sandbox Code Playgroud)
没有努力获得所有课程.另外,我需要在不使用LINQ to XML的情况下重写它,即使用XmlNodeList和XmlNodes.
XmlDocument doc1 = new XmlDocument();
doc1.Load("File.xml");
foreach(XmlNode mainLoop in doc.SelectNodes("Sections")) ??
Run Code Online (Sandbox Code Playgroud)
不确定如何去做.
如何在C#中转换XmlDocument为a XmlNode?我需要将整个XmlDocument对象作为输入参数发送到.NET Web服务.
我的XML模式中有以下复杂类型:
<xs:complexType name="Widget" mixed="true">
<xs:sequence>
<xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
派生XML中的元素可以包含字符串或可以包含格式良好的XML,因此mixed属性为true.
当我通过.NET XSD工具运行时,我得到以下生成代码:
public partial class Widget{
private System.Xml.XmlNode[] anyField;
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
[System.Xml.Serialization.XmlAnyElementAttribute()]
public System.Xml.XmlNode[] Any {
get {
return this.anyField;
}
set {
this.anyField = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不完全确定我应该如何使用它.最终我需要能够将widget的值设置为:
<widget>Hello World!</widget>
Run Code Online (Sandbox Code Playgroud)
要么
<widget>
<foo>Hello World</foo>
</widget>
Run Code Online (Sandbox Code Playgroud)
这两个都验证了架构
我想从 XML 元素中删除空节点。此 xml 是从供应商生成的,我无法控制 xml 生成。但是由于 XML 几乎没有空节点,我需要递归地删除这些空节点。
这个 xml 是从 OMElement 得到的,我使用 [XMLUtils][1] Sample XML 从这个对象得到一个 Element
<A>
<B>
<C>
<C1>
<C11>something</C11>
<C12>something</C12>
</C1>
</C>
<D>
<D1>
<D11>
<D111 operation="create">
<Node>something else</Node>
</D11>
</D11>
</D1>
<D2>
<D21>
</D21>
</D2>
</D>
</B>
</A>
Run Code Online (Sandbox Code Playgroud)
由于 D21 是一个空节点,我想删除 D21,而现在 D2 是一个空节点,我想删除 D2,但由于 D 有 D1,我不想删除 D。
同样,我有可能得到
<A>
<B>
<C>
</C>
</B>
</A>
Run Code Online (Sandbox Code Playgroud)
现在因为 C 是空的,我想删除 C,然后是 B,最后是节点 A。我试图在Node 中使用 removeChild() 方法来做到这一点
但到目前为止,我无法递归删除它们。有什么建议可以递归删除它们吗?
我递归地尝试获取节点和节点长度。但是节点长度没有帮助
if(childNode.getChildNodes().getLength() == 0 ){
childNode.getParentNode().removeChild(childNode); …Run Code Online (Sandbox Code Playgroud) 我有一个XmlNode代表以下xml的例子:
XmlNode xml.innerText =
<book>
<name><![CDATA[Harry Potter]]</name>
<author><![CDATA[J.K. Rolling]]</author>
</book>
Run Code Online (Sandbox Code Playgroud)
我想更改此节点,以便它包含以下内容:
XmlNode xml.innerText =
<book>
<name>Harry Potter</name>
<author>J.K. Rolling</author>
</book>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢!
xmlnode ×10
c# ×8
xml ×4
xmldocument ×3
.net ×1
cdata ×1
insert ×1
java ×1
linq-to-xml ×1
xmlnodelist ×1
xpath ×1
xsd ×1
xslt ×1