我想知道是否有更短的方法来选择忽略具有列表中指定的属性值的节点列表
工作范例:
/item[not(@uid='id1') and not(@uid='id2')]
Run Code Online (Sandbox Code Playgroud)
期望的替代方案:
/item[not(@uid in('id1','id2'))]
Run Code Online (Sandbox Code Playgroud) <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)
不确定如何去做.
这里n2是我的NodeList,我只想查看我的根元素的第一个子节点
public void ClickMe(View view){
Node rootElement=n2.item(0);
NodeList child=rootElement.getChildNodes();
Node first=child.item(0);
//ClassCastException error is coming whenever i am casting first to Element.
Element nm=(Element)first;
Option q= getOption(nm,first);
Log.i(TAG,"the name is was talking about is : "+ q.getName());
}
Run Code Online (Sandbox Code Playgroud)
这就是logcat所说的
07-31 20:32:38.376: E/AndroidRuntime(2950): Caused by: java.lang.ClassCastException: org.apache.harmony.xml.dom.TextImpl cannot be cast to org.w3c.dom.Element
Run Code Online (Sandbox Code Playgroud) 我有一些包含格式良好的 XML 的文本字符串。
我希望能够(1)将这些字符串转换为IXMLNodes
(2)将它们附加到现有的XMLDocument
. 最好不声明新的XMLDocument
第一个。
这似乎不可能?
有没有什么简单的方法可以完成等效的事情?我最初的想法是使用IXMLNode.XML
(string) 属性并插入新字符串。IXMLNode.XML
只读则不然。
这是一个例子,如果我在 a 中有以下字符串TStringList
,
<Property Name="Version" RttiType="tkString"></Property>
<Property Name="ShowSubunit" RttiType="tkBoolean"></Property>
Run Code Online (Sandbox Code Playgroud)
我有以下 XML,已加载到 中TXMLDocument
,我如何轻松地将上面的两行附加到下面TXMLDocument
?
<Program Name="PFOO">
<Class Name="CFOO">
<Property Name="DBN" RttiType="tkString"/>
<Property Name="SDate" RttiType="tkClass" ClassType="TXSDATE">12/30/1899</Property>
<Property Name="XForm" RttiType="tkEnumeration">xfXML</Property>
<Property Name="Singleton" RttiType="tkBoolean">True</Property>
</Class>
</Program>
Run Code Online (Sandbox Code Playgroud)
还有其他(简单)方法可以实现此目的(请不要对 XML 属性进行受保护的黑客攻击)?
谢谢你!
我有一个这样的 XML 文档:
<Columns>
<Column>
<Name>A</Name>
<Width>100</Width>
</Column>
</Columns>
<Columns>
</Columns>
<Columns>
<Column>
<Name>C</Name>
<Width>300</Width>
</Column>
<Column>
<Name>C1</Name>
<Width>310</Width>
</Column>
</Columns>
Run Code Online (Sandbox Code Playgroud)
我正在获取它们的名称和宽度文本并将它们存储在列表中。
var man = new XmlNamespaceManager(xdoc.NameTable);
man.AddNamespace("ns", "http://schemas.microsoft.com/project");
List <string> lstText = new List<string>();
List <List<string>> lst = new List<List<string>>();
XmlNodeList xnList = xdoc.SelectNodes("/ns:Columns/ns:Column", man);
foreach (XmlNode xn in xnList)
{
lstText.Add(xn["Name"].InnerText));
lstText.Add(xn["Width"].InnerText));
}
lst.Add(lstText);
Run Code Online (Sandbox Code Playgroud)
所以,我只能得到这些值:A和100,C和300。我也想得到C1和310。我怎样才能得到它们?
编辑:有些列没有列,有些列有 1 个或多个列。在此示例中,我的列表有 3 个元素:
lst[0][0] = {A, 100}
lst[1][0] = null
lst[2][0] = {C, 300}, lst[2][1] = {C1, 310}
Run Code Online (Sandbox Code Playgroud) 如何获取XmlNode中的文本?见下文:
XmlNodeList nodes = rootNode.SelectNodes("descendant::*");
for (int i = 0; i < nodes.Count; i++)
{
XmlNode node = nodes.Item(i);
//TODO: Display only the text of only this node,
// not a concatenation of the text in all child nodes provided by InnerText
}
Run Code Online (Sandbox Code Playgroud)
而我最终想要做的是在每个节点的文本中加上"HELP:".
我正在使用System.Xml来读取C#中的xml文件.首先,我打开文件(本地)...并使用foreach获取值,如下所示:
XmlNodeList titles = xmlDoc.GetElementsByTagName("title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}
Run Code Online (Sandbox Code Playgroud)
问题是,我的文件中有很多名为title的rss标签,我只想阅读里面的内容<entry></entry>
吗?
我本周收到了一个复杂的XML文件,它基于模式,但我没有收到任何xsd文件,我需要读取这个文件的每个节点.
下面的XML示例:
<xc:XmlTest xmlns:xc="XmlTest" xmlns:mp="bs.TestParameters" xmlns:rt="bs.TestParameters.Parameter1" xmlns:rtcu="bs.TestParameters.Parameter1.Var">
<xc:XmlTestArea xc:value="TestParameters">
<mp:Name xc:Value="raddesso" xmlns:mp="bs.TestParameters">
<mp:Date xc:Value="20130215">
<rt:RunTest xmlns:rt="bs.TestParameters.Parameter1">
<rtcu:Var xmlns:rtcu="bs.TestParameters.Parameter1.Var">
<mp:FinalValue>1234</mp:FinalValue>
</rtcu:Var>
</rt:RunTest>
</mp:Date>
<mp:Date xc:Value="20130216">
<rt:RunTest xmlns:rt="bs.TestParameters.Parameter1">
<rtcu:Var xmlns:rtcu="bs.TestParameters.Parameter1.Var">
<mp:FinalValue>23234</mp:FinalValue>
</rtcu:Var>
</rt:RunTest>
</mp:Date>
</mp:Name>
</xc:XmlTestArea>
</xc:XmlTest>
Run Code Online (Sandbox Code Playgroud)
这只是使用虚假数据的真实文件的示例.
有没有办法在这个节点上做foreach从每个日期找到FinalValue?
我正在尝试从 XML 文件中提取数据,示例结构如下:
<pwx creator="PerfPRO" version="1.0">
<workout>
<athlete></athlete>
<title></title>
<sportType>Bike</sportType>
<cmt></cmt>
<device id=""></device>
<time>2016-01-19T08:01:00</time>
<summarydata>
<beginning>0</beginning>
<duration>3600.012</duration>
</summarydata>
<segment>
<summarydata>
<beginning>0</beginning>
<duration>120</duration>
</summarydata>
</segment>
<segment>
<summarydata>
<beginning>120</beginning>
<duration>120</duration>
</summarydata>
</segment>
<segment>
<summarydata>
<beginning>240</beginning>
<duration>120</duration>
</summarydata>
</segment>
Run Code Online (Sandbox Code Playgroud)
我想理想地作为数据帧访问“段”块(开始和持续时间)中的数据。有许多段块。
我已经尝试了很多东西,但似乎仍然无法提取它,我得到的只是一个空列表。这是我所做的(pwx 是文件名):
xmlData <- xmlInternalTreeParse(pwx, useInternalNodes = TRUE)
xmltop = xmlRoot(XMLdata)
d <- xpathSApply(doc = xmlData, path = "//pwx/workout/segment/summarydata/beginning", fun = xmlValue)
Run Code Online (Sandbox Code Playgroud)
我似乎也可以通过以下方式访问所有段:
segment <- xmltop[[1]]["segment"]
Run Code Online (Sandbox Code Playgroud)
但似乎无法获得值。我已经尝试了上面的许多变体。
非常感谢任何帮助,谢谢。
编辑:
> summary(xmlData)
$nameCounts
cad dist hr pwr sample spd timeoffset beginning
3274 3274 3274 …
Run Code Online (Sandbox Code Playgroud) xmlnodelist ×10
xml ×7
c# ×5
xmlnode ×3
android ×1
contains ×1
delphi ×1
foreach ×1
java ×1
linq-to-xml ×1
msxml ×1
nodes ×1
r ×1
txmldocument ×1
xml-parsing ×1
xmlreader ×1
xpath ×1